fork

fork(2)                        2007-10-27-16:31                        fork(2)



Ðазва
       fork â ÑÑвоÑÑÑ Ð¿ÑоÑеÑ-наÑадок.


СинопÑиÑ
               #include <sys/types.h>
               #include <unistd.h>
               pid_t fork(void);



ÐпиÑ
       fork ÑÑвоÑÑÑ Ð¿ÑоÑеÑ-наÑадок, коÑÑий вÑдÑÑзнÑÑÑÑÑÑ
       вÑд баÑÑкÑвÑÑкого лиÑе ÑвоÑм ÑденÑиÑÑкаÑоÑом
       (PID), ÑденÑиÑÑкаÑоÑом баÑÑкÑвÑÑкого пÑоÑеÑÑ
       (PPID), а Ñакож ÑакÑом, Ñо викоÑиÑÑÐ°Ð½Ð½Ñ ÑеÑÑÑÑÑв
       вÑÑановлÑÑÑÑÑÑ Ð² 0. Ðамки на Ñайли Ñа поÑоÑнÑ
       ÑиÒнали не ÑÑпадковÑÑÑÑÑÑ.

       ÐÑд Linux fork ÑеалÑзовано з викоÑиÑÑаннÑм
       «copy-on-write» â копÑÑ ÑÑоÑÑнок пам'ÑÑÑ ÑоблÑÑÑÑÑ
       лиÑе пÑи запиÑÑ Ð² ниÑ. ÐÑже, ÑÑÐ½Ð¾Ñ Ð±ÑÑнÑкÑваннÑ
       Ñ Ð»Ð¸Ñе ÑÐ°Ñ Ð½Ð° копÑÑÐ²Ð°Ð½Ð½Ñ Ð±Ð°ÑÑкÑвÑÑÐºÐ¾Ñ ÑаблиÑÑ
       ÑÑоÑÑнок Ñ ÑÑвоÑÐµÐ½Ð½Ñ ÑнÑкалÑÐ½Ð¾Ñ ÑÑÑÑкÑÑÑи задаÑÑ
       Ð´Ð»Ñ Ð½Ð°Ñадка.


ÐовеÑнене знаÑеннÑ
       Ð ÑÐ°Ð·Ñ ÑÑпÑÑÑ, в поÑÑк Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð±Ð°ÑÑкÑвÑÑкого
       пÑоÑеÑÑ Ð¿Ð¾Ð²ÐµÑÑаÑÑÑÑÑ PID пÑоÑеÑÑ-наÑадка, а в
       поÑÑк наÑадка â 0. ÐÑи невдаÑÑ Ð² баÑÑкÑвÑÑкий
       конÑекÑÑ Ð¿Ð¾Ð²ÐµÑÑаÑÑÑÑÑ -1, а змÑнна errno оÑÑимÑÑ
       вÑдповÑдне знаÑеннÑ.


Ðомилки
       EAGAIN
               fork не може ÑозмÑÑÑиÑи доÑÑаÑнÑо пам'ÑÑÑ
              Ð´Ð»Ñ ÐºÐ¾Ð¿ÑÑ Ð±Ð°ÑÑкÑвÑÑÐºÐ¸Ñ ÑаблиÑÑ ÑÑоÑÑнок Ñ
              ÑозмÑÑÑиÑи ÑÑÑÑкÑÑÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð´Ð»Ñ Ð½Ð°Ñадка.

       ENOMEM
               fork не змÑг ÑозмÑÑÑиÑи необÑÑÐ´Ð½Ñ ÑÑÑÑкÑÑÑи
              ÑдÑа ÑеÑез неÑÑаÑÑ Ð¿Ð°Ð¼'ÑÑÑ.


ÐÑдповÑднÑÑÑÑ ÑÑандаÑÑам
       Ðиклик fork вÑдповÑÐ´Ð°Ñ SVr4, SVID, POSIX, X/OPEN, BSD4.3.


ÐивÑÑÑÑÑ Ñакож
       clone (2), execve (2), vfork (2), wait (2).




© 2005-2007 DLOU, GNU FDL     2007-10-27-16:31                        fork(2)