This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: pstree on windows xp - find process spawned from windows process


nachum wrote:
Hi, I'm new to cygwin, and I am beginning to like it. I am having trouble
though with child processes that have only Windows PIDs and not cygwin
PIDs.

When I run Xilinx bitgen from cygwin 2 processes are run both with the
name
bitgen.exe. Below I am running bitgen through make.

      PID    PPID    PGID     WINPID  TTY  UID    STIME COMMAND
S    3936    2836    3936       2380    0 12696 19:54:49 /usr/bin/make
S     808    3936    3936       2852    0 12696 19:54:49
/cygdrive/c/Xilinx/10.1/ISE/bin/nt/bitgen
     2852       0       0       2852    ?    0 19:54:49
c:\Xilinx\10.1\ISE\bin\nt\bitgen.exe
      504       0       0        504    ?    0 19:54:49
c:\Xilinx\10.1\ISE\bin\nt\unwrapped\bitgen.exe

When I ctrl-c to kill bitgen after calling make I end up killing only
process 808 which is also process 2852 as 808 is the child of 3936
(make).
504 doesn't get killed, and within process explorer I see it running and
it
reports it's parent as 2852 even though 2852 is gone. I thought I could
kill
the process by finding it within the make file after the bitgen call and
manually killing it, but I haven't found a way to find the process. I
prefer
not to use a name based kill of bitgen b/c that will kill all bitgens
that
might be going on at the same time.

I am running in an xterm on XP 32 bit SP3. Here are some relevant
versions:
bash 3.2.48(21)
ps 1.11
pstree 21.5
kill 1.14
I don't know anything about Xilinx/bitgen so I don't know why you end up
with the wrapped and unwrapped versions running.  That would be a question
for the Xilinx folks.  But if you just need to kill a process, you can
use '/bin/kill -f 504' in your example above.  That should kill the
Windows process for you.

I know that I can kill it with the -f switch, but I want to know how to figure out which process to kill. For example if I have 2 separate compilations going then I will have 4 bitgen processes running at once since the Xilinx bitgen tools spawn an "unwrapped" version of bitgen to do the actual processing. This means I need a programmatic way of saying this is the PID that belongs to this instance of make->bitgen. pstree doesn't seem to allow identifying Windows sub processes, if I could do that then I could use pstree to figure out which bitgen is spawned from make, and subsequently which unwrapped bitgen should be killed.

Since I'm not sure what Xilinx is doing, I can't really say. Someone else here *might* be able to tell you, if they have run into the same thing either with Xilinx or some other native Windows app. But since this probably has more to do with Xilinx's particular implementation and less to do with Cygwin proper, this would be off-topic for this list. That's one of the reasons why I was suggesting talking to the Xilinx folks. That and the fact that they should know exactly what they're doing, why, and how you might track it.

--
Larry Hall                              http://www.rfk.com
RFK Partners, Inc.                      (508) 893-9779 - RFK Office
216 Dalton Rd.                          (508) 893-9889 - FAX
Holliston, MA 01746

_____________________________________________________________________

A: Yes.
> Q: Are you sure?
>> A: Because it reverses the logical flow of conversation.
>>> Q: Why is top posting annoying in email?

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]