openfd()

Open for private access a file associated with a given descriptor

Synopsis:

#include <unistd.h>

int openfd( int fd,
            int oflag );

Arguments:

fd
A file descriptor associated with the file that you want to open.
oflag
How you want to open the file; a combination of the following bits:

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The openfd() function opens the file associated with the file descriptor, fd. This is similar to dup(), except the new fd has private access modes and offset. The access mode, oflag, must be equal to or more restrictive than the access mode of the source fd.

Returns:

A file descriptor, or -1 if an error occurred (errno is set).

Errors:

EBADF
Invalid file descriptor fd.
EACCES
The access mode specified by oflag isn't equal to or more restrictive than the access mode of the source fd.
EBUSY
Sharing mode (sflag) was denied due to a conflicting open (see sopenfd()).

Examples:

#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>

int main ( void )
{
    int fd, fd2, oflag;

    fd = open ("/etc/passwd", O_RDONLY);
    fd2 = openfd ( fd, O_RDONLY );
    return EXIT_SUCCESS;
}

Classification:

QNX Neutrino

Safety:
Cancellation point Yes
Interrupt handler No
Signal handler Yes
Thread Yes

See also:

dup(), sopenfd()