$
Результаты, пункт Б.
$ ./father.out &
[1] 1368110
$
FATHER PARAM: pid=1368110 ppid=499756
SON PARAM: pid=1372207 ppid=1368110
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
00000210 - 100 438293 380959 - 10 0 - 4676K - ? 00:00:03 helpviewer
...
00000200 - 100 1368110 499756 - 10 0 - 636K - ? 00:00:00 father.out
00000200 - 100 1372207 1368110 - 10 0 - 636K - ? 00:00:00 son.out
00000200 - 100 1376304 1372209 - 10 0 - 648K - ? 00:00:00 ps
00000200 - 100 1372209 1368110 - 10 0 - 844K - ? 00:00:00 sh
ps -la
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
00000210 - 100 438293 380959 - 10 0 - 4676K - ? 00:00:03 helpviewer
…
00000000 - 100 1392686 499756 - 10 0 - 648K - ? 00:00:00 ps
00000200 - 100 1372207 1 - 10 0 - 636K - ? 00:00:00 son.out
Результаты, пункт В.
$ ./father.out
FATHER PARAM: pid=2707502 ppid=499756
SON PARAM: pid=2711599 ppid=2707502
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
00000210 - 100 438293 380959 - 10 0 - 4676K - ? 00:00:04 helpviewer
…
00000000 - 100 2707502 499756 - 10 0 - 636K - ? 00:00:00 father.out
00000000 - 100 2715696 2711601 - 10 0 - 648K - ? 00:00:00 ps
00000000 - 100 2711601 2707502 - 10 0 - 844K - ? 00:00:00 sh
2711599 (Zombie)
$
3.3. Управление процессами посредством сигналов.
3.3.1. С помощью команды kill -l
ознакомьтесь с перечнем сигналов, поддерживаемых процессами. Ознакомьтесь с
системными вызовами kill(2), signal(2).
Подготовьте программы следующего содержания:
а) процесс father порождает процессы son1, son2, son3 и запускает на исполнение
программные коды из соответствующих исполнительных файлов;
б) далее родительский процесс осуществляет управление потомками, для этого он
генерирует сигнал каждому пользовательскому процессу;
в) в пользовательских процессах-потомках необходимо обеспечить:
для son1 - реакцию на сигнал по умолчанию;
для son2 - реакцию игнорирования;
для son3 - перехватывание и обработку сигнала.
Int kill (pid_t pid, int sig)
Системный вызов kill посылает сигналы указанным процессам. По умолчанию (если не указано имя или номер сигнала) посылается сигнал SIGTERM. Идентификатор процесса является аргументом для этой утилиты: если он больше нуля, то сигнал посылается процессу с указанным pid, если он равен нулю, то сигнал посылается всем процессам, принадлежащим пользователю, если он меньше нуля, то он воспринимается как идентификатор группы процессов, и тогда сигнал посылается всей группе.
Утилита kill c ключом –l позволяет узнать, какие сигналы можно послать процессу.
$ kill -l
1 HUP Hangup 29 PROF Profiling timer expired
2 INT Interrupt 30 XCPU CPU time limit exceeded
3 QUIT Quit 31 XFSZ File size limit exceeded
4 ILL Illegal instruction 32 32 signal 32
5 TRAP Trace trap 33 33 signal 33
6 ABRT Abort 34 34 signal 34
7 EMT EMT trap 35 35 signal 35
8 FPE Floating point exception 36 36 signal 36
9 KILL Killed 37 37 signal 37
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.