2010-07-25 3 views
4

오늘 오후는 핸들, 안전 손잡이, PInvoke 및 기타 여러 가지 측면에서 나를위한 충돌 과정이었습니다. 나는 그것의 천천히 가라 앉고 있다고 생각하지만 여전히 몇 가지 개념으로 고심하고있다.프로세스 핸들을 위해 사용해야하는 SafeHandle 구현은 무엇입니까?

다른 핸들 유형과 함께 사용해야하는 SafeHandle의 구현을 어떻게 알 수 있습니까?

즉, I는 예 PROCESS_INFORMATION 구조 그 CreateProcess를

I가 볼 수있는 두 개의 공개 구현에 대한 호출로부터 리턴 된 프로세스 핸들 (함께 사용해야하여 SafeHandle 어떤 구현 SafeFileHandleSafeWaitHandle? - 어느 쪽이의이 경우 적절한 것으로 보이지 않는다. 내가 사용한다

?

답변

7

SafeWaitHandle 해당 하나입니다. 프로세스 핸들이 사실에 때 Waitable 핸들입니다. 당신은 WaitForSi를 호출 할 수 있습니다 ngleObject()를 호출하면 프로세스가 종료 될 때까지 차단됩니다. ReleaseHandle 메서드는 필요에 따라 CloseHandle()을 호출합니다. Process 클래스가 이미 필요한 것을 수행하지 않았습니까?

+0

StdIn과 같은 자식 프로세스의 소켓에 핸들을 전달해야합니다. 'Process' 클래스는 분명히이 작업을 수행하지 않을 것입니다! 또한 프로세스 클래스는 v4.0 이전 버전의 .Net에서 환경 변수가 소문자라는 문제가 있습니다. (모두 작동하는 방식을 알고 싶습니다.) – Justin

+0

Erm, 실제로 소켓 핸들에 대해 이야기하고 있습니까? 파이프가 필요한 소켓 btw를 통해 프로세스 I/O를 리디렉션 할 수 없습니다. 당신이 무엇을 하려는지 확실하지 않습니다. –

+0

나는 FastCGI를 .NET (http://www.fastcgi.com/devkit/doc/fcgi-spec.html)에서 구현하려고 시도했다. StdIn에 전달 된 핸들이 (비록 전체 섹션이 나를 혼란스럽게 만들었지 만, 나의 접근 방식은 그것을 시도하고 어떤 일이 일어날지를 알기 위해 노력할 것입니다.) – Justin

관련 문제