Microsoft는 여기에서 안전합니다. 기사에서 "Creating a Child Process with Redirected Input and Output"은 다음과 같이 말하고 있습니다.자식 프로세스가 나중에 소유 한 상속 된 핸들을 닫아야합니까?
이 프로세스가 종료되면 나머지 열려있는 핸들이 정리됩니다.
큰 응용 프로그램에서 리소스가 누출되지 않도록 핸들을 명시 적으로 닫습니다.
이것은 전혀 쓸모가 없습니다. 무슨 처리합니까? 어떤 과정에서?
나는 그 주위에서 머리를 쓰고 싶다.
부모 프로세스에서 핸들을 SECURITY_ATTRIBUTES.bInheritHandle = TRUE
과 함께 만들면 자식 프로세스가이를보고 사용할 수 있으며 핸들은 두 프로세스에서 동일한 값과 액세스 권한을 갖습니다.
그러나 동일한 핸들입니까, 아니면 동일한 숫자 표현을 가진 사본입니까?
hRead
핸들을 자식 프로세스에 전달하여 파이프에서 읽을 수 있도록하고 자식 프로세스가 핸들을 닫으면 도 부모 프로세스에서 닫아야합니까? 자식 프로세스 아래에서 파이프를 닦지 않습니까?
내 실험에 따르면 CloseHandle
은 자식이 닫힌 후 자식에게 전달 된 hRead
핸들을 닫을 때 성공을 표시합니다. 이것은 강력히 주장합니다. 예, 닫아야합니다. 그러나 여기에 더 충실한 조언을 해주시면 감사하겠습니다.
아. 자식 프로세스를 생성 할 때 핸들 *이 복제됩니다. 그게 내가 한 일이야. – GSerg