Работа с интерфейсом прикладного программирования операционной системы Linux. Шашков Б.Д. - 14 стр.

UptoLike

Составители: 

14
Лабораторные задания
Разработать программу, выполняющую "разветвление" посредством сис-
темного вызова fork(). Вывести на экран идентификаторы PID и PPID для
родительского и дочернего процессов. Использовать функцию перенаправления
стандартного вывода в файл.
Варианты заданий
1. Приостановить на 1 с родительский процесс. В дочернем процессе с помощью
системного вызова system() выполнить стандартную команду ps
, перена-
правив вывод в файл номер 1. Вслед за этим завершить дочерний процесс. В
родительском процессе вызвать ps и перенаправить в файл номер 2. Освобо-
дить ячейку таблицы процессов порожденного процесса.
2. Приостановить на 1 с родительский процесс. Выполнить в дочернем процессе
один из системных вызовов exec(), передав ему в качестве параметра стан-
дартную программу ps. Аналогично выполнить вызов ps в родительском
процессе. Результаты работы команд ps в обоих процессах перенаправить в
один и тот же файл.
3. Определить в программе глобальную переменную var со значением, равным
1. Переопределить стандартный вывод и родительского, и дочернего процес-
сов в один и тот же файл. До
выполнения разветвления увеличить на 1 пере-
менную var, причем вывести ее значение, как до увеличения, так и после. В
родительском процессе увеличить значение переменной на 3, а в дочернем на
5. Вывести значение переменной до увеличения и после него внутри каждого
из процессов. Результат пояснить.
4. Приостановить на 1 с дочерний процесс. В дочернем
процессе с помощью сис-
темного вызова system() выполнить стандартную команду ps, перенапра-
вив вывод в файл номер 1. Вслед за этим завершить дочерний процесс. В ро-
дительском процессе вызвать ps и перенаправить в файл номер 2. Освободить
ячейку таблицы процессов порожденного процесса.
5. Приостановить на 1 с дочерний процесс. Выполнить в дочернем процессе
один
из системных вызовов exec(), передав ему в качестве параметра стан-
дартную программу ps. Аналогично выполнить вызов ps в родительском
процессе. Результаты работы команд ps в обоих процессах перенаправить в
один и тот же файл. Освободить ячейку таблицы процессов порожденного
процесса.
6. Программа порождает через каждые 2 секунды 5 новых процессов. Каждый из
этих процессов выполняется заданное время и останавливается, сообщая об
этом родителю. Программа-родитель выводит на экран все сообщения об из-
менениях в процессах.
                         Лабораторные задания

     Разработать программу, выполняющую "разветвление" посредством сис-
темного вызова fork(). Вывести на экран идентификаторы PID и PPID для
родительского и дочернего процессов. Использовать функцию перенаправления
стандартного вывода в файл.
                           Варианты заданий

1. Приостановить на 1 с родительский процесс. В дочернем процессе с помощью
   системного вызова system() выполнить стандартную команду ps, перена-
   правив вывод в файл номер 1. Вслед за этим завершить дочерний процесс. В
   родительском процессе вызвать ps и перенаправить в файл номер 2. Освобо-
   дить ячейку таблицы процессов порожденного процесса.
2. Приостановить на 1 с родительский процесс. Выполнить в дочернем процессе
   один из системных вызовов exec(), передав ему в качестве параметра стан-
   дартную программу ps. Аналогично выполнить вызов ps в родительском
   процессе. Результаты работы команд ps в обоих процессах перенаправить в
   один и тот же файл.
3. Определить в программе глобальную переменную var со значением, равным
   1. Переопределить стандартный вывод и родительского, и дочернего процес-
   сов в один и тот же файл. До выполнения разветвления увеличить на 1 пере-
   менную var, причем вывести ее значение, как до увеличения, так и после. В
   родительском процессе увеличить значение переменной на 3, а в дочернем на
   5. Вывести значение переменной до увеличения и после него внутри каждого
   из процессов. Результат пояснить.
4. Приостановить на 1 с дочерний процесс. В дочернем процессе с помощью сис-
   темного вызова system() выполнить стандартную команду ps, перенапра-
   вив вывод в файл номер 1. Вслед за этим завершить дочерний процесс. В ро-
   дительском процессе вызвать ps и перенаправить в файл номер 2. Освободить
   ячейку таблицы процессов порожденного процесса.
5. Приостановить на 1 с дочерний процесс. Выполнить в дочернем процессе
   один из системных вызовов exec(), передав ему в качестве параметра стан-
   дартную программу ps. Аналогично выполнить вызов ps в родительском
   процессе. Результаты работы команд ps в обоих процессах перенаправить в
   один и тот же файл. Освободить ячейку таблицы процессов порожденного
   процесса.
6. Программа порождает через каждые 2 секунды 5 новых процессов. Каждый из
   этих процессов выполняется заданное время и останавливается, сообщая об
   этом родителю. Программа-родитель выводит на экран все сообщения об из-
   менениях в процессах.



                                     14