From: Ronald Otto Valentin Fischer <ashi.niwatori@the-quickest.com>
To: cygwin@cygwin.com
Subject: Killing-Process woes
Date: Tue, 20 Jun 2017 06:24:00 -0000 [thread overview]
Message-ID: <1497939835.2871765.1014990544.3396EEF9@webmail.messagingengine.com> (raw)
I'm spawning processes in background, but have problems killing them.
Here is the setup:
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
/usr/bin/ruby
9296 6224 6224 11236 cons3 3672028 08:05:10
/usr/bin/zsh
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
/usr/bin/ruby
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:
5548 10276 5812 2376 cons3 3672028 08:20:43
/usr/bin/ruby
10276 5812 5812 10312 cons3 3672028 08:20:43
/usr/bin/zsh
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?
Ronald
--
Ronald Fischer <ronald.fischer@fusshuhn.de>
http://www.fusshuhn.de/
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
next reply other threads:[~2017-06-20 6:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-20 6:24 Ronald Otto Valentin Fischer [this message]
2017-06-20 13:18 ` cyg Simple
2017-06-20 13:30 ` Ronald Fischer
2017-06-24 8:48 ` Csaba Raduly
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1497939835.2871765.1014990544.3396EEF9@webmail.messagingengine.com \
--to=ashi.niwatori@the-quickest.com \
--cc=cygwin@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).