Продублировать файловый дескриптор
#include <unistd.h>int dup( int filedes );
libc
Функция dup() дублирует файловый дескриптор, определяемый filedes. Новый файловый дескриптор ссылается на оригинальный файловый дескриптор и имеет те же блокировки. Новый файловый дескриптор также:
Изменение позиции с помощью одного файлового дескриптора влечет за собой изменение позициии в другом файловом дескрипторе.
Вызов:
dup_filedes = dup( filedes );
аналогичен:
dup_filedes = fcntl( filedes, F_DUPFD, 0 );
Новый файловый дескриптор в случае успеха.
Если возникла ошибка, функция возвращает -1
, код ошибки записывается в errno.
OPEN_MAX
файловых дескрипторов. #include <fcntl.h>#include <unistd.h>#include <sys/stat.h>#include <stdlib.h>int main( void ){int filedes, dup_filedes;filedes = open( "file", O_WRONLY | O_CREAT | O_TRUNC,S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP );if ( filedes != -1 ){dup_filedes = dup( filedes );if ( dup_filedes != -1 ){/* process file *//* ... */close( dup_filedes );}close( filedes );return (EXIT_SUCCESS);}return (EXIT_FAILURE);}
POSIX 1003.1
chsize(), close(), creat(), dup2(), eof(), errno, execl(), execle(), execlp(), execlpe(), execv(), execve(), execvp(), execvpe(), fcntl(), fileno(), fstat(), isatty(), lseek(), open(), read(), sopen(), stat(), tell(), umask(), write()
Предыдущий раздел: Описание API системной библиотеки