#include <lcio.h> FILE *fdopen(int fileDescriptor, const char *options)The synopsis for the POSIX implementation is
#include <stdio.h> FILE *fdopen(int fileDescriptor, const char *options)
fdopen
associates an open OpenEdition file descriptor with a
pointer to a FILE structure enabling access to the file using standard I/O.
This pointer enables you to control buffering and to format input and
output.
fdopen
accepts the following options
. These specified
options must not conflict with the current mode of the file
descriptor:
If the options string includes a "b," the "b" is ignored. The file position
indicator of the new pointer is the file offset of the file descriptor.
fdopen
clears the error indicator and the end-of-file indicator for
the pointer. When the file pointer is closed, the file descriptor is also
closed.
fdopen
can also permit access to an
open socket through a standard C FILE pointer.
fdopen
returns a FILE pointer to the control block for the new
pointer.
fdopen
returns NULL if not successful.
fdopen
to open an HFS file for standard I/O,
only if the file already exists. This option is specified by the
O_EXCL
option bit for open
, but there is no equivalent
fopen
functionality.
/* This example must be compiled with the posix compiler option. */ #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <fcntl.h> FILE *fopen_excl(char *pathname, char *openmode) { int open_opts = O_TRUNC | O_CREAT | O_EXCL; int fd; FILE *fileptr; /* Turn the fopen style openmode into open bits. */ /* We assume openmode is a valid open mode. */ if (openmode[0] == 'a') open_opts |= O_APPEND; if (strchr(openmode, '+')) open_opts |= O_RDWR; else open_opts |= O_WRONLY; fd = open(pathname, open_opts, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); if (fd < 0) { /* if the file wouldn't open */ perror("open error"); return NULL; } /* Make a FILE ptr for the fd. */ fileptr = fdopen(fd, openmode); if (!fileptr) { perror("fdopen error"); close(fd); return NULL; } return fileptr; }
fopen
, open
Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.