BIO_s_fd.pod 2.7 KB
Newer Older
D
Dr. Stephen Henson 已提交
1 2 3 4
=pod

=head1 NAME

5
BIO_s_fd, BIO_set_fd, BIO_get_fd, BIO_new_fd - file descriptor BIO
D
Dr. Stephen Henson 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19

=head1 SYNOPSIS

 #include <openssl/bio.h>

 BIO_METHOD *	BIO_s_fd(void);

 #define BIO_set_fd(b,fd,c)	BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
 #define BIO_get_fd(b,c)	BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c)

 BIO *BIO_new_fd(int fd, int close_flag);

=head1 DESCRIPTION

D
Dr. Stephen Henson 已提交
20
BIO_s_fd() returns the file descriptor BIO method. This is a wrapper
D
Dr. Stephen Henson 已提交
21 22
round the platforms file descriptor routines such as read() and write().

23 24 25 26 27 28 29 30 31 32 33 34 35 36
BIO_read() and BIO_write() read or write the underlying descriptor.
BIO_puts() is supported but BIO_gets() is not.

If the close flag is set then then close() is called on the underlying
file descriptor when the BIO is freed.

BIO_reset() attempts to change the file pointer to the start of file
using lseek(fd, 0, 0).

BIO_seek() sets the file pointer to position B<ofs> from start of file
using lseek(fd, ofs, 0).

BIO_tell() returns the current file position by calling lseek(fd, 0, 1).

D
Dr. Stephen Henson 已提交
37 38 39 40 41 42 43
BIO_set_fd() sets the file descriptor of BIO B<b> to B<fd> and the close
flag to B<c>.

BIO_get_fd() places the file descriptor in B<c> if it is not NULL, it also
returns the file descriptor. If B<c> is not NULL it should be of type
(int *).

U
Ulf Möller 已提交
44
BIO_new_fd() returns a file descriptor BIO using B<fd> and B<close_flag>.
D
Dr. Stephen Henson 已提交
45 46 47

=head1 NOTES

48
The behaviour of BIO_read() and BIO_write() depends on the behavior of the
D
Dr. Stephen Henson 已提交
49 50 51 52 53 54 55 56 57 58 59 60
platforms read() and write() calls on the descriptor. If the underlying 
file descriptor is in a non blocking mode then the BIO will behave in the
manner described in the L<BIO_read(3)|BIO_read(3)> and L<BIO_should_retry(3)|BIO_should_retry(3)>
manual pages.

File descriptor BIOs should not be used for socket I/O. Use socket BIOs
instead.

=head1 RETURN VALUES

BIO_s_fd() returns the file descriptor BIO method.

61 62 63 64 65
BIO_reset() returns zero for success and -1 if an error occurred.
BIO_seek() and BIO_tell() return the current file position or -1
is an error occurred. These values reflect the underlying lseek()
behaviour.

D
Dr. Stephen Henson 已提交
66 67 68
BIO_set_fd() always returns 1.

BIO_get_fd() returns the file descriptor or -1 if the BIO has not
U
Ulf Möller 已提交
69
been initialized.
D
Dr. Stephen Henson 已提交
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

BIO_new_fd() returns the newly allocated BIO or NULL is an error
occurred.

=head1 EXAMPLE

This is a file descriptor BIO version of "Hello World":

 BIO *out;
 out = BIO_new_fd(fileno(stdout), BIO_NOCLOSE);
 BIO_printf(out, "Hello World\n");
 BIO_free(out);

=head1 SEE ALSO

85 86 87 88 89
L<BIO_seek(3)|BIO_seek(3)>, L<BIO_tell(3)|BIO_tell(3)>,
L<BIO_reset(3)|BIO_reset(3)>, L<BIO_read(3)|BIO_read(3)>,
L<BIO_write(3)|BIO_write(3)>, L<BIO_puts(3)|BIO_puts(3)>,
L<BIO_gets(3)|BIO_gets(3)>, L<BIO_printf(3)|BIO_printf(3)>,
L<BIO_set_close(3)|BIO_set_close(3)>, L<BIO_get_close(3)|BIO_get_close(3)>