Л/р 3 - Процессы¶
Написать на языке С 2 программы, которые, симулируют некоторые функции bash (запуск процессов, перенаправление ввода-вывода) с помощью системных вызовов (fork, exec, kill, signal, wait, waitpid, dup2, open, sleep, pipe,...). Программы должны работать следующим образом:
prog1:
[0] echo 'tail -f $1' > /tmp/rtail
[1] /tmp/rtail ~/.bash_history >> /tmp/1.txt &
PID процесса [1] должен быть сохранен.
[2] Ожидает завершения команды, запущенной на шаге [1]. После завершения выводит: "Program 1 terminated."
prog2:
[3] Выводит на экран: "Program 2 started."
[4] устанавливает обработчики следующих сигналов:
- SIGHUP — перезапускает саму себя
- SIGUSR1 — по варианту (номер варианта — остаток от деления номера зачетки на 5, увеличенный на 1):
- cat /tmp/1.txt | grep cd
- cat /tmp/1.txt | uniq -c | sort
- cat /tmp/1.txt | wc -l
- cat /tmp/1.txt | grep `pwd`
- cat /tmp/1.txt | awk '{print $1}'
на экране должен быть вывод соответствующей команды
[5] sleep 30
[6] kill PID
PID — это PID процесса, запущенного в строчке [1].
[7] После завершения выводит: "Program 2 terminated."
Т.е. в задании все вызовы cat, sleep, kill, а также конструкции |, >, >>, & должны быть заменены на соответствующие системые вызовы (и/или последовательность вызова функций в С).
./prog1 & ./prog2
Оценка: 10 баллов
Литература:
Срок сдачи: 2.11.2011