| Rev | Author | # | Line |
|---|---|---|---|
| 1 | perry | 1 | !!NAME |
| 2 | PerryLorier | 2 | dup2 - duplicate a file descriptor |
| 1 | perry | 3 | |
| 4 | !!SYNOPSIS | ||
| 2 | PerryLorier | 5 | __#include <unistd.h>__ |
| 6 | __int dup2(int__ ''oldfd''__, int__ ''newfd''__);__ | ||
| 1 | perry | 7 | |
| 8 | !!DESCRIPTION | ||
| 2 | PerryLorier | 9 | __dup2__ creates a copy of the file descriptor ''oldfd''. |
| 1 | perry | 10 | |
| 2 | PerryLorier | 11 | After successful return of dup2(2), the old and new descriptors may be used interchangeably. They share locks, file position pointers and flags; for example, if the file position is modified by using lseek(2) on one of the descriptors, the position is also changed for the other. |
| 1 | perry | 12 | |
| 2 | PerryLorier | 13 | The two descriptors do not share the close-on-exec flag, however. |
| 1 | perry | 14 | |
| 2 | PerryLorier | 15 | dup2(2) makes ''newfd'' be the copy of ''oldfd'', closing ''newfd'' first if necessary. |
| 1 | perry | 16 | |
| 17 | !!RETURN VALUE | ||
| 2 | PerryLorier | 18 | __dup2__ returns the new descriptor, or -1 if an error occurred (in which case, ''errno'' is set appropriately). |
| 1 | perry | 19 | |
| 20 | !!ERRORS | ||
| 2 | PerryLorier | 21 | ;[EBADF]: ''oldfd'' isn't an open file descriptor, or ''newfd'' is out of the allowed range for file descriptors. |
| 22 | ;[EMFILE]: The process already has the maximum number of file descriptors open and tried to open a new one. | ||
| 1 | perry | 23 | |
| 24 | !!WARNING | ||
| 2 | PerryLorier | 25 | The error returned by dup2(2) is different to that returned by __fcntl(__..., __F_DUPFD__, ...__)__ (fcntl(2)) when ''newfd'' is out of range. On some systems dup2(2) also sometimes returns [EINVAL] like __F_DUPFD__. |
| 1 | perry | 26 | |
| 27 | !!CONFORMING TO | ||
| 2 | PerryLorier | 28 | SVr4, SVID, [POSIX], X/OPEN, BSD 4.3. SVr4 documents additional [EINTR] and [ENOLINK] error conditions. POSIX.1 adds [EINTR]. |
| 1 | perry | 29 | |
| 30 | !!SEE ALSO | ||
| 2 | PerryLorier | 31 | fcntl(2), open(2), close(2) |
lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 8 times)