0
두 프로세스를 파이프를 통해 통신하고 숫자를 번갈아 빼는 데 어려움이 있습니다. process1 :두 프로세스가 파이프를 사용하여 숫자를 빼기
출력 같아야 9 process2 : 8 process1 :에서 있어 : 출력 파크
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
int p2c[2];
int c2p[2];
int n = 9;
pipe(p2c);
pipe(c2p);
write(p2c[1], &n, sizeof(int));
if(fork() == 0) {
read(p2c[0], &n, sizeof(int));
printf("Got from parent: %d", n);
n--;
write(c2p[1], &n, sizeof(int));
close(p2c[0]);
close(p2c[1]);
close(c2p[0]);
close(c2p[1]);
exit(0);
}
else{
read(c2p[0], &n, sizeof(int));
printf("Got from child: %d", n);
n--;
write(p2c[1], &n; sizeof(int));
close(p2c[0]);
close(p2c[1]);
close(c2p[0]);
close(c2p[1]);
}
return 0;
}
: 내가 지금까지했던 적이 무엇 7 ...
부모 : 9 소아과 수 : 8 이 두 프로세스를 얻는 적절한 방법은 0까지 숫자를 빼는 것입니까? "8 : 아이 9있어 부모로부터 알았어"그 결과로, 당신은 필요, 당신은 모두 아이에 대한 루프 동안 또는 필요
이것은 완벽합니다. 내가 게시 한 것은 단지 읽기 및 쓰기 뿐이므로 출력이 논리적임을 이해합니다. 그러나 나는 그 생각을 잠시 동안했으나 다음과 같이 보였다 : 부모로부터 받음 : 9 부모로부터 받음 : 8 ... 아이에게서 받음 : 8 아이에게서 받음 : 7 ... 그리고 나 내 문제가 클로저 처리에 있다고 생각해보십시오. 이것은 완벽합니다, 고마워요! – user3642381