This is the mail archive of the
cygwin
mailing list for the Cygwin project.
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/