2010-07-25 59 views
4

今天下午對我來說是一個關於手柄,安全把手,PInvoke和其他許多事情的速成課程。我認爲它正在慢慢沉入,但是我仍然在掙扎着一些概念:我應該使用什麼SafeHandle實現進程句柄?

我如何知道我應該在不同的句柄類型下使用SafeHandle的實現?

具體來說,我應該處理句柄(如在PROCESS_INFORMATION結構從調用CreateProcess的

只有兩個公共的實現,我可以看到返回用什麼實現的SafeHandle的SafeFileHandleSafeWaitHandle? - 這些都不似乎是在這種情況下適當的。

我應該使用哪一種?

回答

7

SafeWaitHandle是恰當的。一個進程句柄實際上是一個可等待的句柄。您可以致電WaitForSi ngleObject(),它會阻塞,直到進程終止。根據需要,ReleaseHandle方法調用CloseHandle()。你確定Process類沒有做你需要的嗎?

+0

我需要將一個句柄傳遞給子進程作爲StdIn - 'Process'類顯然不會讓我這樣做!此外,流程類有一個環境變量在v4.0之前版本的.Net中有問題(我也想知道它是如何工作的) – Justin 2010-07-25 15:08:43

+0

Erm,所以你實際上是在談論一個套接字句柄?你不能通過套接字重新定向進程I/O,這需要管道。不知道你想要做什麼。 – 2010-07-25 15:33:45

+0

我打算在.NET中實現FastCGI(http://www.fastcgi.com/devkit/doc/fcgi-spec.html) - 據我所知,傳遞給StdIn的句柄可以是處理一個套接字(儘管整個部分確實讓我感到困惑 - 我的方法是試試看看會發生什麼!) – Justin 2010-07-25 22:11:14

相關問題