dup

DUP(2)          Ð ÑководÑÑво пÑогÑаммиÑÑа Linux          DUP(2)



ÐÐЯ
       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> 2003



Linux 1.1.46                      1994-08-21                            DUP(2)