ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »
