Системное программирование, Управление процессами
Все программы должны соответствовать принятому стилю кодирования.
- В начале файла - заголовок с автором и лицензией;
- Перед каждой функцией - комментарий с описанием функции и аргументов;
- Текст программы разбит на "абзацы" с комментарием перед каждым "абзацем".
Все возвращаемые функциями значения должны проверяться. В случае ошибок выполнение программы должно аварийно завершаться с выдачей сообщения об ошибке и кодом завершения EXIT_FAILURE.
8. Управление процессами
- Создайте программу, которая будет запускать в дочернем процессе другую
программу, путь к файлу которой задается аргументом командной строки,
а также выводить в стандартный поток вывода информацию о статусе
завершения этой программы. При реализации должны быть использованы
функции fork(), execl(), waitpid() и макроопределения WIFEXITED(),
WEXITSTATUS(), WIFSIGNALED(), WTERMSIG().
В выводе ожидается упоминание exit() и код завершения для WIFEXITED(), упоминание сигналов и номер сигнала для WIFSIGNALED()> ./task1 /bin/true Процесс завершился с помощью exit(), код возврата: 0 > ./task1 /bin/false Процесс завершился с помощью exit(), код возврата: 1 > ./task1 ./a.out Процесс завершился из-за необработанного сигнала, сигнал: 11 > > ./task1 /zzz/zzz execl: No such file or directory Процесс завершился с помощью exit(), код возврата: 1
- Создайте программу, позволяющую проверить, что дочерний и родительский процессы совместно используют текущую позицию файла
- Создайте программу - пример использования функции system()
- Создайте собственный аналог функции execlp() без использования других функций exec*p().