다음 코드는 파이프를 통해 다른 프로세스의 메시지를 읽습니다. 모든 프로세스는 모든 메시지를 올바르게 출력하지만 while 회 돌이를 지나서 진행하지는 않습니다. 이클립스에서 디버깅을 시도했다. 모든 메시지를 읽은 후, 루프 동안 멈춘다.프로세스가 읽기에서 멈춤
색인은 각 프로세스에 할당 된 번호입니다. 첫 번째 프로세스는 인덱스 == 0을가집니다. 메시지 자체는 단순히 메시지를 보내는 프로세스의 인덱스입니다.
while((n = read(fd[index][0], &mymsg, sizeof(int))) == sizeof(int))
printf("process%d has received a message from process%d\n", index, mymsg);
왜 이런 일이 발생하는지 알고 싶습니다. 여기
각 프로세스가 다른에 기록하는 방법입니다
// Write to other process
if(write(fd[index2][1], &index, sizeof(int)) != sizeof(int))
sys_error(2);
이 다섯 번 이루어집니다. fd는 각 프로세스의 읽기 및 쓰기 종료 테이블입니다.
이것이 왜 당신이 기대하는 행동이 아닌지는 명확하지 않습니다. 어떤 조건에서 코드는'while' 루프를 지나쳐야할까요? –
@DavidSchwartz 바이트를 읽지 않으면 오류가 반환됩니다. – sj755
그런 일이 일어날 것으로 기대되는 특별한 이유가 있습니까? 그렇지 않다면 왜 while 루프를 종료해야합니까? –