문제

파일 *cgiout에 글을 쓰는 프로그램이 있으며 스트림에 편지를 쓴 직후에 배경 프로세스를 포크하고 실행해야합니다. 문제는 포크 후에 파일 * 스트림이 때때로 플러시되는 것처럼 보이고 복제 된 출력이 발생한다는 것입니다 (포크 후에는 모든 열린 파일이 닫히면 버퍼가 플러시되는 것 같습니다). 이것을 피하려면 어떻게해야합니까? 라이브러리에서 열리기 때문에 마스터 프로세스에서 파일을 닫고 싶지 않으며 소켓이나 파이프라고 생각합니다.

도움이 되었습니까?

해결책

당신의 질문을 이해하는지 확실하지 않지만 당신이 당신의 cgiOut 버퍼는 당신 앞에 비어 있습니다 fork() 당신이 사용할 수있는 fflush() 바로 앞의 스트림에서 fork(). 버퍼를 플러시해야합니다.

버퍼링 설정을 통해 부패하지 않은 스트림을 사용하는 것이 적합 할 수 있습니다. setvbuf() 그리고 친구들. 이렇게하면 버퍼링 문제가 없지만 (읽지 말아야하지 않아야합니다. 그러나 원하는 것은 아닐 수도 있습니다.

다른 팁

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top