Get the cygwin PID of a Win PID

Christopher Faylor cgf-use-the-mailinglist-please@cygwin.com
Fri Jun 27 15:49:00 GMT 2008


On Fri, Jun 27, 2008 at 01:30:19PM +0200, Corinna Vinschen wrote:
>On Jun 27 13:58, Borislav Ivanov wrote:
>> Thank you again,
>> 
>> I looked further and found out that this happens when I start the
>> mysql-nt application from bash.
>> 
>> Here's the result when I start it from cmd - only one process listed
>> with equal cywgin and win PIDs:
>> 
>> D:>mysql\bin\mysqld-nt.exe --defaults-file=conf\mysql.conf
>> 
>> bash-3.2$ ps -W | grep mysql
>>      6044       0       0       6044    ?    0 13:24:25
>> D:\mysql\bin\mysqld-nt.exe
>> 	
>> And then the bash version:
>> 	
>> bash-3.2$ mysql/bin/mysqld-nt.exe --defaults-file=conf/mysql.conf
>> 
>> bash-3.2$ ps -W | grep mysql
>>       992    4572     992       5900  con  500 14:35:13
>> /drives/d/mysql/bin/mysqld-nt
>>      5900       0       0       5900    ?    0 14:35:14
>> d:\mysql\bin\mysqld-nt.exe
>> 
>> The funny thing is that with cygwin 1.3 both commands invoked only one
>> process. This is mysql 5.0.38. My question is: Is there a way to make
>> this work like in 1.3 (producing only one process with the same pid I
>> can use later), or I should look for a workaround?
>
>The process is apparently a native Windows process.  I don't know why it
>shows up twice when started from bash but since it's a native process,
>Cygwin's kill will not work as expected on it.  1.3 is long gone, and
>things have considerably changed since then.  I don't know the exact
>difference, but kill() is supposed to send a POSIX signal, which native
>applications have no idea about.  You should rather use the native
>taskkill command to kill native processes.

I can reproduce this behavior by running notepad.  -W is showing the
stub process, which has the cygwin pid, and, on another line, the actual
windows process.  I can't duplicate this with the windows version of
ping, though, strangely enough.

Killing the stub should cause the windows process to go away.

ps -W does not have a perfect algorithm for knowing when to mask the
windows process but it seems like you should be able to just ignore the
line which has a '?' in it.

I changed the pid handling somewhere along the line in the 1.5 series.
In 1.3, you could get a pid cascade where a cygwin process which execed
a cygwin process which execed a windows process would end up with at
least three processes waiting on each other.  I don't remember the
details now but the result of cleaning that up made "ps -W" a little
less predictable when dealing with windows processes.

cgf

--
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/



More information about the Cygwin mailing list