Документация по LinuxLinuxDoc.Ru 🔍

dup, dup2 - функции, создающие копию описателя файла

НАЗВАНИЕ
dup, dup2 - функции, создающие копию описателя файла

СИНТАКСИС
#include

int dup(int oldfd);
int dup2(int oldfd, int newfd);

ОПИСАНИЕ
dup и dup2 создают копию файлового описателя oldfd. После
успешного вызова функции dup или dup2 старый описатель
можно использовать вместо нового и наоборот. Они
совместно блокируют файл, используют указатели позиции
файла и флаги. Например, если позиция файла изменяется с
помощью lseek в одном из описателей, то она изменяется
также и в другом. Однако, два описателя имеют свой
собственный флаг "close-on-exec". dup предоставляет
новому описателю наименьший свободный номер. dup2 делает
newfd копией oldfd, закрывая newfd, если это необходимо.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
dup и dup2 возвращают новый описатель или значение -1,
если произошла ошибка (в этом случае переменной errno
присваивается значение соответствующего кода ошибки).

КОДЫ ОШИБОК
EBADF oldfd не является открытым файловым описателем, или
newfd находится за пределами допустимого диапазона
файловых описателей.

EMFILE Процесс уже открыл максимальное количество файловых
описателей и делает попытку открыть новый.

ПРЕДУПРЕЖДЕНИЕ
Ошибка, которую возвращает dup2, отличается от той,
которую возвращает fcntl(..., F_DUPFD, ...), когда newfd
находится за пределами диапазона. На некоторых системах
dup2 также иногда возвращает
значение EINVAL, подобное F_DUPFD.

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 описывает
дополнительные коды ошибок EINTR и ENOLINK. POSIX.1
содержит EINTR.
Читать новости Linux в Telegram
Linux - dup, dup2 - функции, создающие копию описателя файла
Мы в соцсетях ✉