Оқулық «Федералдық білім беруді дамыту институты»



Pdf көрінісі
бет84/220
Дата25.02.2022
өлшемі2,22 Mb.
#26438
түріОқулық
1   ...   80   81   82   83   84   85   86   87   ...   220
80 
 
 
Осындай  тексерістің  классикалық  үлгісіне  айналған  мысал  төменде 
келтірілген: 
 
#include 
 
#include int main(void)
 
{
 
pid_t pid;
 
switch (pid = fork())
 
{
 
case -1:
 
/* fork() Сәтсіз орындалу — pid тең -1 */ 
perror("Unsuccessful fork() execution\n"); break;
 
case 0:
 
/* Еншілес процес денесі */
 
/* pid = 0 — бұл еншілес процес. */
 
/* Онда pid мәні нольмен инициацияланады */ sleep(1);
 
printf("CHILD: Child spawned with PID = %d\n", 
getpid());
 
printf("CHILD: Parent PID = %d\n", getppid());
 
/* Еншілес процес жұмысының аяқталуы */
 
_exit(0);
 
default:
 
/* процес денесі-аналық процесіне жатады */
 
/*  pid>0.  Демек,  тегінің  pid  алған  аналық  процес  /* 
/*орындалып жатыр */
 
printf("PARENT:Child spawned with PID=%d\n", 
pid);
 
printf("PARENT:Parent PID=%d\n", getpid());
 
}
 
/* 
Процес 
денесі-fork()өңделгеннен 
кейін 
аналық 
процесінің денесі */
 
/* Егер case 0 _exit(0) көрсетілмесе, онда*/
 
/* тегінің артынан ерген команданы орындаған болар еді*/
 
exit(0);
 
}
 
Бағдарлама 
келесі 
жолақтарды 
шығарады 
(процестер 
идентификаторлары бір-бірінен ерекшеленуі ықтимал):
 
PARENT:Child spawned with PID=2380 
PARENT:Parent PID=2368 CHILD: Child 
spawned with PID = 2380 CHILD: Parent 




Достарыңызбен бөлісу:
1   ...   80   81   82   83   84   85   86   87   ...   220




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет