This is the mail archive of the
mailing list for the Cygwin project.
Re: Killing-Process woes
On 6/20/2017 2:23 AM, Ronald Otto Valentin Fischer wrote:
> I'm spawning processes in background, but have problems killing them.
> Here is the setup:
Maybe review the Cygwin document at
https://cygwin.com/cygwin-ug-net/kill.html would help.
> My script (zsh) creates one or more processes in the background, and
> waits until they are finished. I have also set up a trap for SIGINT,
> with the intention that if I press Control-C, the background processes
> should be killed. I have verified the setup so far, that upon Control-C,
> the trap function is indeed invoked, and I have all the PIDs of the
> background processes. The problem is with the actual killing, and here
> is why:
> The background processes are actually (zsh-) scripts, which do some
> setup (basically setting various environment variables), and then invoke
> a (Cygwin-)Ruby program which does the "real work". The program is
> executed by something like
> ruby myprog.rb
> (Note that this Ruby program is NOT invoked in background).
> When my SIGINT trap is entered, I can see from ps indeed the
> relationship between the processes involved, for instance
> 10852 9296 6224 10536 cons3 3672028 08:05:10
> 9296 6224 6224 11236 cons3 3672028 08:05:10
> The PID of my background process - the zsh wrapper - in this concrete
> case is 9296, and we can see that this is the parent of the Ruby
> process, 10852. The problem is that if I just kill 9296, the Ruby
> process keeps running, orphaned:
> 10852 1 6224 10536 cons3 3672028 08:05:10
> I've found on Stackoverflow the suggestion to treat this as a process
> group and use negative PIDs. I tried this too, but it didn't work. Here
> is a similar example:
Not implemented as you found out below. But I don't know that the
negative process number is in use anywhere. Are you sure it wasn't a
signal number as a option to kill?
> 5548 10276 5812 2376 cons3 3672028 08:20:43
> 10276 5812 5812 10312 cons3 3672028 08:20:43
> If I do a
> kill -- -10276
> I get the error message
> kill: -10276: No such process
> This happens both with the zsh-builtin kill and with /usr/bin/kill Is
> there a simple way to kill the zsh process in addition to the ruby
> process, or do I have to analyze the output of the ps command to
> manually find the PID of the Ruby process and kill it?
Perhaps use the -f --force switch might help.
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple