Process Execution from Cygwin Shells

Andy Koppe andy.koppe@gmail.com
Thu May 19 05:28:00 GMT 2011


On 19 May 2011 05:58, Sravan Bhamidipati wrote:
> Steps to reproduce:
> 1. Open "Process Monitor" and filter for events of type "Operation"
> and value "Process Create".
> 2. Open a Cygwin shell (using cygwin.bat or mintty or rxvt): bash or ksh, e.g.
> 3. Type any command that is not a shell built-in, say "clear" or "cmd".
> 4. Notice that "Process Monitor" captured two process creation events
> related to the invoked command: a new child shell and another of the
> invoked command.

The first is the shell forking itself, the second is the forked
process invoking exec() to run the new program.

> This seems very strange to me. The behavior applies even when
> executing a Shell script. I noticed identical behavior when using
> MinGW Shell as well.

No surprise there, since the MinGW Shell (i.e. MSYS) is little more
than an old Cygwin version.

> Shells in Unix-based OSs don't behave this way.

Yep, because there exec() doesn't create a new process, it just
replaces the program in the current process. Windows can't do that,
hence Cygwin has to emulate it by creating a new process.

> Can something be done about it?

Nope.

Andy

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



More information about the Cygwin mailing list