I would like to start a process in its own process group (or, alternatively, change its group once started) and:
- have the processes in the group respond to
Ctrl
+C
from the terminal - get the id of the process group so that I can terminate all the processes in the group via the
kill
command.
Note: I tried setsid prog [args]
but the processes do not respond to Ctrl+C from the terminal nor I could get the new process group id.
I also tried to change the process group via Perl's setpgrp($pid, $pid)
and POSIX::setpgid($pid, $pid)
, to no avail.
Edit: The larger problem:
I have a process (single-threaded; let's call it the "prolific" process P
) that starts many child processes synchronously (one after another; it starts a new one when the previous child process terminates). From the terminal, I want to be able to kill P
and the tree of processes below it. To do that, I could simply arrange to kill the processes in P
's group. However, the default behavior is that P
is in the group of its parent process. That means that P
's parent will be killed if I kill all the processes in P
's group, unless I have P
and its tree be in their own group.
My intention is to kill P
and the tree below it, but not P
's parent. Also, I cannot modify P
's code itself.