오류 파이프 연결 안 됨 233(0xE9)을 수정하는 방법
ERROR_PIPE_NOT_CONNECTED는 개발자가 흔히 마주치는 문제로, 일반적으로 파이프에 프로세스가 연결되지 않았다는 메시지 233(0xE9)이 함께 표시됩니다. 이 오류가 발생하면 이 문서에서 효과적으로 해결할 수 있는 몇 가지 솔루션을 제공합니다.
ERROR_PIPE_NOT_CONNECTED를 해결하려면 어떤 조치를 취할 수 있나요?
1. 코드 수정
- 코드 파일에 액세스합니다.
PIPE_NOWAIT
코드에서 정의 했는지 확인하세요 .- 다음과 같이 코드로 구현하세요.
DWORD mode = PIPE_NOWAIT;SetNamedPipeHandleState(_callstackPipe,&mode,NULL,NULL);ConnectNamedPipe(_callstackPipe,NULL);mode = PIPE_WAIT;SetNamedPipeHandleState(_callstackPipe,&mode,NULL,NULL);
- 수정 사항을 저장합니다.
2. ConnectNamedPipe 구현
- 코드를 검토하세요.
- ReadFile을 사용하는 동안 ERROR_PIPE_NOT_CONNECTED 오류가 발생하면 원격 측의 연결이 끊어졌음을 나타냅니다.
- 이런 상황에서는 처음에 DisconnectNamedPipe 를 호출하지 않고 ConnectNamedPipe 를 사용하는 것을 고려해보세요 .
3. ConnectNamedPipe() 다음에 리스너 스레드를 통합합니다.
- 코드 편집기를 엽니다.
- 여기에 표시된 대로 다음 클라이언트 연결을 허용하도록 리스너 스레드를 포함하도록 구현을 수정하세요.
Main Thread{ CreateListenerThread(); WaitForQuitEvent();}ListenerThread{ ConnectNamedPipe(); if (success) { CreateListenerThread(); if(PeekNamedPipe() detects a message) { ReadFile(); ProcessReceivedMessage(); // if a -quit signal is detected, trigger quit event } FileFlushBuffers(); DisconnectNamedPipe(); CloseHandle(); } else { // manage/report error }}
- 변경 사항을 저장하는 것을 잊지 마세요.
4. 상속 활성화
- 코드 파일에 액세스합니다.
- 다음 줄을 포함하세요:
BOOL res = SetHandleInformation(hPipe, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);
- 업데이트를 저장하세요.
이렇게 조정하면 핸들에 대한 상속이 가능해져 문제가 해결될 가능성이 있습니다.
답글 남기기