Warning: main(/www/www/htdocs/style/globals.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/d/dup.html on line 1
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/globals.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/d/dup.html on line 1
Warning: main(/www/www/htdocs/style/header.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/d/dup.html on line 8
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/header.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/d/dup.html on line 8
Duplicate a file descriptor
#include <unistd.h>
int dup( int filedes );
- filedes
- The file descriptor that you want to duplicate.
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
The dup() function duplicates the file descriptor specified by
filedes.
The new file descriptor refers to the same open file descriptor as the
original, and shares any locks.
The new file descriptor also:
- references the same file or device
- has the same open mode (read and/or write)
- has an identical file position to the original (changing the
position with one descriptor results in a changed position in the other).
Changing the file position with one descriptor results in a changed
position for the other.
Calling:
dup_filedes = dup( filedes );
is the same as:
dup_filedes = fcntl( filedes, F_DUPFD, 0 );
The new file descriptor for success, or -1 if an error occurs
(errno is set).
- EBADF
- The file descriptor, filedes, isn't a valid.
- EMFILE
- There are already OPEN_MAX file descriptors in use.
- ENOSYS
- The dup() function isn't implemented for the filesystem specified
by filedes.
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <stdlib.h>
int main( void )
{
int filedes, dup_filedes;
filedes= open( "file",
O_WRONLY | O_CREAT | O_TRUNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP );
if( filedes != -1 ) {
dup_filedes = dup( filedes );
if( dup_filedes != -1 ) {
/* process file */
/* ... */
close( dup_filedes );
}
close( filedes );
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}
POSIX 1003.1
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |
chsize(),
close(),
creat(),
dup2(),
eof(),
errno,
execl(),
execle(),
execlp(),
execlpe(),
execv(),
execve(),
execvp(),
execvpe(),
fcntl(),
fileno(),
fstat(),
isatty(),
lseek(),
open(),
read(),
sopen(),
stat(),
tell(),
umask(),
write()
Warning: main(/www/www/htdocs/style/footer.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/d/dup.html on line 215
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/footer.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/d/dup.html on line 215