ВУЗ:
Составители:
13
Синхронизация процесса - родителя и процесса - потомка выполняется по
системному вызову wait(). Для завершения процессов служит функция
_exit().
В рассмотренном примере после порождения процесса – потомка, роди-
тельский процесс выдает выводит на терминал идентификатор порожденного
процесса, задерживается на 5 секунд и вызывает функцию для опроса состояния
процесса – потомка. Порожденный процесс выводит сообщение, содержащее
значение переменной x. Следует обратить внимание на то, что значение этой пе-
ременной совпадают и у родителя, и у потомка.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int main()
{
int x, pid;
x=2;
printf("Single process, x=%d\n",x);
pid=fork();
if(pid == 0)
printf("New, x=%d\n",x); // Потомок
else if(pid > 0){ // Родитель
printf("Old, pid=%d, x=%d\n",pid,x);
sleep(5);
wait(pid);
}
else {
perror("Fork error ");
return -1;
}
return 0;
}
Синхронизация процесса - родителя и процесса - потомка выполняется по системному вызову wait(). Для завершения процессов служит функция _exit(). В рассмотренном примере после порождения процесса – потомка, роди- тельский процесс выдает выводит на терминал идентификатор порожденного процесса, задерживается на 5 секунд и вызывает функцию для опроса состояния процесса – потомка. Порожденный процесс выводит сообщение, содержащее значение переменной x. Следует обратить внимание на то, что значение этой пе- ременной совпадают и у родителя, и у потомка. #include#include #include #include int main() { int x, pid; x=2; printf("Single process, x=%d\n",x); pid=fork(); if(pid == 0) printf("New, x=%d\n",x); // Потомок else if(pid > 0){ // Родитель printf("Old, pid=%d, x=%d\n",pid,x); sleep(5); wait(pid); } else { perror("Fork error "); return -1; } return 0; } 13
Страницы
- « первая
- ‹ предыдущая
- …
- 11
- 12
- 13
- 14
- 15
- …
- следующая ›
- последняя »