other versions
- wheezy 0.98-4
other sections
DUP(2) | Руководство программиста Linux | DUP(2) |
ИМЯ¶
dup, dup2 - создать дубликат файлового дескриптораОБЗОР¶
#include <unistd.h>int dup(int oldfd); int dup2(int oldfd, int newfd);
ОПИСАНИЕ¶
dup и dup2 создают копию файлового дескриптора oldfd.ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
dup и dup2 возвращают новый дескриптор или -1, если произошла ошибка (в этом случае errno устанавливается должным образом).ОШИБКИ¶
- EBADF
- oldfd не является открытым файловым дескриптором, или же newfd находится вне допустимого диапазона файловых дескрипторов.
- EMFILE
- Процесс уже открыл максимальное количество файлов и пытается открыть еще один.
- EINTR
- Вызов dup2 был прерван каким-либо сигналом.
- EBUSY
- (Только в Linux) Может случиться в dup2 во время при условии состязательных вызовов open() и dup().
ВНИМАНИЕ¶
Ошибка, которую возвращает dup2, отличается от той, что возвращает fcntl(..., F_DUPFD, ...), когда newfd находится вне допустимых пределов. На некоторых системах dup2 также иногда возвращает EINVAL, как F_DUPFD.ОШИБКИ¶
Если newfd был открыт, любые ошибки, которые могли бы случиться во время close(), теряются. Осторожный программист не будет использовать dup2 не закрыв сперва newfd .СООТВЕТСТВИЕ СТАНДАРТАМ¶
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 документирует дополнительные коды ошибки EINTR и ENOLINK. POSIX.1 добавляет EINTR. Ошибка EBUSY является специфичной для Linux.СМОТРИ ТАКЖЕ¶
fcntl(2), open(2), close(2).ПЕРЕВОД¶
Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999, Виктор Вислобоков <corochoone@perm.ru> 20031994-08-21 | Linux 1.1.46 |