<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; "><div>Regarding this post on Mono-OSX&nbsp;<a href="http://go-mono.com/forums/#nabble-td3251954">http://go-mono.com/forums/#nabble-td3251954</a>&nbsp;and some of my own issues with Process.Start() on MacOS X.</div><div><br></div><div>I've discovered that Process.Start(ProcessStartInfo info) leaves child processes hanging around until the parent process dies, unless you call WaitForExit() on the child process.</div><div>An alternative is to do something like this: (see above forum link for the rest of the code that this applies to).</div><div><br></div><div><div>using (var ioreg = Process.Start(ioregInfo)) {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ioreg.EnableRaisingEvents = true;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>EventHandler handler;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>handler = (s,e) =&gt; { ioreg.Exited -= handler; ioreg.WaitForExit(); };</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ioreg.Exited &#43;= handler;</div></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>// Do something with the process</div><div>}</div><div><br></div><div>If you don't call WaitForExit() in some way on the process, the child processes hang around until the parent process dies and you end up with fork() returning 1 with an EAGAIN error code because you'll have exceeded the maximum number of processes allowed per uid.</div><div><br></div><div>Is this a bug or by design?</div><div><br></div></body></html>