Эксперт
Сергей
Сергей
Задать вопрос
Мы готовы помочь Вам.

 

Задача Максимальное количество баллов
1. Напишите, откомпилируйте и запустите программу, которая печатала бы идентификатор пользователя, запустившего программу, и идентификатор его группы. 2
2. В качестве примера использования системных вызовов getpid() и getppid() самостоятельно напишите программу, печатающую значения PID и PPID для текущего процесса. Запустите ее несколько раз подряд. Посмотрите, как меняется идентификатор текущего процесса. Объясните наблюдаемые изменения. 2
3. Измените программу 3* так, чтобы родитель и ребенок совершали разные действия (какие – не важно). 3
4. Модифицируйте программу 3* так, чтобы порожденный процесс запускал на исполнение новую (любую) программу. 4
5. Напишите программу, распечатывающую значения аргументов командной строки и параметров окружающей среды для текущего процесса 4

 

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

Пример создания нового процесса с одинаковой работой процессов ребенка и родителя

#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;

}

Была ли полезна данная статья?
Да
61.12%
Нет
38.88%
Проголосовало: 1106

или напишите нам прямо сейчас:

⚠️ Пожалуйста, пишите в MAX или заполните форму выше.
В России Telegram и WhatsApp блокируют - сообщения могут не дойти.
Написать в MAXНаписать в TelegramНаписать в WhatsApp