Основы операционных систем. Практикум

Прогон программы с fork() с одинаковой работой родителя и ребенка


Для иллюстрации сказанного давайте рассмотрим следующую программу:

/* Программа 03-1.с – пример создания нового процесса с одинаковой работой процессов ребенка и родителя */

#include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { pid_t pid, ppid; int a = 0; (void)fork();

/* При успешном создании нового процесса с этого места псевдопараллельно начинают работать два процесса: старый и новый */ /* Перед выполнением следующего выражения значение переменной a в обоих процессах равно 0 */

a = a+1;

/* Узнаем идентификаторы текущего и роди- тельского процесса (в каждом из процессов !!!) */

pid = getpid(); ppid = getppid();

/* Печатаем значения PID, PPID и вычислен- ное значение переменной a (в каждом из процессов !!!) */ printf("My pid = %d, my ppid = %d, result = %d\n", (int)pid, (int)ppid, a); return 0; }

Листинг 3.1. Программа 03-1.с – пример создания нового процесса с одинаковой работой процессов ребенка и родителя. (html, txt)

Наберите эту программу, откомпилируйте ее и запустите на исполнение (лучше всего это делать не из оболочки mc, так как она не очень корректно сбрасывает буферы ввода-вывода). Проанализируйте полученный результат.



Содержание раздела