Rechercher une page de manuel
dup
Langue: ru
Version: 1994-08-21 (fedora - 25/11/07)
Section: 2 (Appels système)
Sommaire
ИМЯ
dup, dup2 - создать дубликат файлового дескриптораОБЗОР
#include <unistd.h> int dup(int oldfd); int dup2(int oldfd, int newfd);
ОПИСАНИЕ
dup и dup2 создают копию файлового дескриптора oldfd.Старый и новый дескрипторы можно использовать друг вместо друга. Они имеют общие блокировки, указатель позиции в файле и флаги; например, если позиция в файле была изменена с помощью lseek, на одном из дескрипторов, то эта позиция также меняется и на втором.
Два дескриптора, однако, каждый имеют свой собственный флаг закрыть-при-exec.
dup использует самый маленький свободный номер дескриптора.
dup2 делает newfd копией oldfd, закрывая newfd, если требуется.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
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> 2003Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre