|
Байланысты: қазақша кітап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
|
|
|