DUP(2)

НАЗВАНИЕ
dup - дублирование дескриптора открытого файла

СИНТАКСИС


        int dup (fildes)

        int fildes;

ОПИСАНИЕ
Аргумент fildes - это дескриптор файла, полученный после выполнения системных вызовов creat, open, dup, fcntl и pipe. Системный вызов dup возвращает новый дескриптор файла, имеющий следующие общие свойства с исходным дескриптором:

  1. Тот же открытый файл (или канал).
  2. Тот же указатель текущей позиции в файле (то есть оба дескриптора разделяют один и тот же указатель).
  3. Тот же режим доступа (чтение, запись или чтение/запись).

Новый дескриптор создается таким, чтобы после выполнения системных вызовов exec(2) файл оставался открытым [см. fcntl(2)].

Возвращается наименьший из доступных дескрипторов.

Системный вызов dup завершается неудачей, если выполнено хотя бы одно из следующих условий:

[EBADF]
Аргумент fildes не является корректным дескриптором открытого файла.
[EINTR]
Во время выполнения системного вызова перехвачен сигнал.
[EMFILE]
Превышается максимально допустимое количество файлов, открытых одновременно в одном процессе.
[ENOLINK]
Аргумент fildes указывает на удаленный компьютер, связи с которым в данный момент нет.

СМ. ТАКЖЕ
close(2), creat(2), exec(2), fcntl(2), open(2), pipe(2), lockf(3C).

ДИАГНОСТИКА
При успешном завершении результат равен неотрицательному целому числу - дескриптору файла; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.