LINUX.ORG.RU

pid`ы потомков


0

0

Пость я порождаю процесс(не свой, а системный вызов программы), далее я его прибиваю (kill), но он порождает потома, а он живет. Как либо прибить с потомками, либо получить pid потомка?
Как вариант могу grep`нуть вывод ps - но это криво, хотелось бы системный вызов для С.
Ядро 2.4.х

anonymous

Вроде для этой цели были придуманы группы процессов, и сигнал отправлять группе процессов.

>Как вариант могу grep`нуть вывод ps

Если сначала убить своего потомка, то потомок этого потомка уйдет к init --- ps | grep не поможет.

mky ★★★★★
()
Ответ на: комментарий от mky

Группы процессов - пока не знаком, почитаю завтра )
Грeпать я хотел до kill, а то да, уходит - смотрел )

anonymous
()
Ответ на: комментарий от anonymous

Только учти, что потомок может и сменить свою группу процессов. Ещё он может породить потомка и сразу умереть, тогда этого потомка (внука уже) грепнуть не получится.

zwon
()
Ответ на: комментарий от zwon

Что-то не выходит. Делаю:
setpgid(pid_of_child, 0);
(Этим я хотел перевести потомка в group-лидера, если я так все понял)
Получаю -1 и errno = EPERM

Думал, думал и сделал через ps )

Но хотелось бы разобраться (неспешно), почему не вышло.

anonymous
()
Ответ на: комментарий от anonymous

ERRORS
The setpgid() function will fail if:

EPERM The process indicated by the pid argument is a session
leader.

EPERM The pid argument matches the process ID of a child
process of the calling process and the child process
is not in the same session as the calling process.

EPERM The pgid argument does not match the process ID of the
process indicated by the pid argument, and there is no
process with a process group ID that matches pgid in
the same session as the calling process.

Одно из трех

ftor
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.