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