mkfifo()
이 성공했지만 파이프로 작업 중이며 파이프 하나가 열리지 않습니다.open()의 오류를 보는 방법
나는이 있습니다
/* create the FIFO (named pipe) */
int ret_mk = mkfifo(out_myfifo, 0666);
if(ret_mk < 0) {
perror(out_myfifo);
unlink(out_myfifo);
return -1;
}
printf("ret_mk = %d\n", ret_mk);
/* write to the FIFO */
out_fd = open(out_myfifo, O_WRONLY);
printf("out_fd = %d\n", out_fd);
을하지만 아무것도 표시되지 않습니다, open()
후 임의의 텍스트 심지어 인쇄 인쇄가되지됩니다. here에서
우리는이 :
open()
기능은 파일을 참조하는 데 사용되는 정수 값을 반환합니다. 성공하지 못하면 -1을 리턴하고 오류 유형을 나타내도록 전역 변수errno
을 설정합니다.
열리지 않는 이유는 무엇입니까?
'mkfifo()'가 어떻게 성공했는지 알 수있는 코드가 표시되지 않습니다. 'mkfifo()'에 의해 리턴 된 값을 포착하거나 테스트해야하고'mkfifo()'가 성공했음을 알기 위해서는 0 이었음을 증명해야한다. 그리고 여러분이 알다시피, 만약 파일 기술자 번호가 출력되지 않는다면, FIFO가 읽혀 지도록 프로세스가 없기 때문에'open()'이 완료되지 않았기 때문입니다. –