Тема: Процессы в Linux
Варианты:
- Напишите программу, которая создает два подпроцесса, а они, в свою очередь, - свой подпроцесс. После каждого вызова fork каждый родительский процесс должен использовать функцию writeln для вывода идентификаторов своих дочерних процессов.
- Предположим, что вызовы execvp и execlp не существуют. Напишите эквиваленты этих процедур, используя вызовы execl и execv. Параметры этих процедур должны состоять из списка каталогов и набора аргументов командной строки.
- Напишите программу waitcmd, которая выполняет произвольную команду при изменении файла. Она должна принимать в качестве аргументов командной строки имя контролируемой файла и команду, которая должна выполняться в случае его изменения. Для слежения за файлом можно использовать вызов fstat. Программа не должна расходовать напрасно системные ресурсы, поэтому следует использовать процедуру sleep, для приостановки выполнения программы waitcmd в течение заданного интервала времени, после того как она проверит файл.
- Напишите программу, показывающую, что значения переменных программы в родительском и дочернем процессах первоначально совпадают, но не зависят друг от друга.
- Определите, что происходит в родительском процессе, если дочерний процесс закрывает файл, дескриптор которого он унаследовал после ветвления. Останется ли файл открытым в родительском процессе или же будет закрыт?
- Напишите программу fake, которая использует целочисленное значение первого аргумента в качестве статуса завершения. Используя намеченный выше метод, выполните программу fake, задавая различные значения аргументов, включая большие и отрицательные.
- Переделайте процедуру docommand так, чтобы она возвращала статус вызова halt выполняемой команды. Что должно происходить, если вызов wait возвращает значение -1?
- Напишите собственную версию функции getenv.
- Напишите процедуру, которая получает истинные идентификаторы пользователя и группы вызывающего процесса, а затем преобразует их в символьную форму и записывает в лог-файл.
- Напишите программу, которая запускает дочерний процесс, выводящий на экран переданные параметры. Исследовать различные способы передачи параметров вариантами команды ехес().
|