BIO_s_fd.pod 2.2 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 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
round the platforms file descriptor routines such as read() and write().

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_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 已提交
39
BIO_new_fd() returns a file descriptor BIO using B<fd> and B<close_flag>.
D
Dr. Stephen Henson 已提交
40 41 42

=head1 NOTES

43
The behaviour of BIO_read() and BIO_write() depends on the behavior of the
D
Dr. Stephen Henson 已提交
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
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.

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()
59
behaviour.
D
Dr. Stephen Henson 已提交
60 61 62 63

BIO_set_fd() always returns 1.

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

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

80
L<BIO_seek(3)|BIO_seek(3)>, L<BIO_tell(3)|BIO_tell(3)>, TBA