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: Help understanding process tree


On Fri, Apr 29, 2005 at 11:01:42AM -0400, Christopher Faylor wrote:
>On Fri, Apr 29, 2005 at 12:26:32AM -0700, Yitzchak Scott-Thoennes wrote:
>>On Thu, Apr 28, 2005 at 11:02:58AM -0400, Christopher Faylor wrote:
>>> On Thu, Apr 28, 2005 at 07:28:05AM -0700, Earl Chew wrote:
>>> >I'm working on a cygwin problem and have been looking at the Win32
>>> >process tree structure using Process Explorer from Sysinternals:
>>> >
>>> >http://www.sysinternals.com/ntw2k/freeware/procexp.shtml
>>> >
>>> >I'd like help understanding why Process Explorer shows cygwin
>>> >child processes as orphans, but win32 child processes as children.
>>> >
>>> >How is this so?
>>> >
>>> >For example, if I start bash, then start cmd /c dir, I will see:
>>> >
>>> >bash
>>> >  bash
>>> >    cmd /c dir
>>> >
>>> >My reading of the code is that the 2nd bash is the fork-stub that is
>>> >waiting for cmd to complete.
>>> >
>>> >Now, if I start sleep 30, I will see:
>>> >
>>> >bash
>>> >sleep 30
>>> 
>>> Right.  cmd is a non-cygwin program so it needs a cygwin stub to handle
>>> being "execed".  sleep is a cygwin program and does not require any
>>> hand holding.
>>
>>Now go back and reread the sentence where he says "I'd like help
>>understanding why..." :)
>
>exec is not a windows concept.  There is no way for one program to pass
>on the pid of another program.  So, while cygwin does use windows pids,
>when a process is execed, the new process is passed a handle to the original
>process (to stop the original pid from being used), and the original process
>exits.  Since the original process disappears, I suppose that would make
>the execed process look like an orphan.
>
>"a non-cygwin program...needs a cygwin stub to handle being execed"
>
>If the process being execed is a pure windows process, the original process
>sticks around, waiting for handshaking with the new process which indicates
>that the new process knows how to deal with being execed.  Since that never
>comes, the original process stays around until the new process exits and
>you'll there will be no orphan.

Sigh.  I tried so hard to come up with a concise description and I still
muffed it.

"Since that never comes, the original process stays around until the new
process exits and there will be no orphan."

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/


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