Л/р 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):
    1. cat /tmp/1.txt | grep cd
    2. cat /tmp/1.txt | uniq -c | sort
    3. cat /tmp/1.txt | wc -l
    4. cat /tmp/1.txt | grep `pwd`
    5. 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

Also available in: HTML TXT