我正在尝试学习 C 中的管道,但我被卡住了。我尝试了很多东西,但我无法获得正确的输出。
下一个程序应该显示:123
但它的输出总是方向(除非我认为):
-1845296639
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main (int argc, char *argv[]){
int i;
int buff[4];
int f[2];
if(pipe(f) == -1)
perror("pipe");
for(i=0; i<3; i++){
int val = i+1;
switch(fork()){
case -1:
perror("fork");
break;
case 0:
close(f[0]);
write(f[1], &val, 1);
exit(0);
break;
default:
break;
}
}
close(f[1]);
for(i=0; i<3; i++)
wait(NULL);
read(f[0], buff, i);
printf("%d", *buff);
exit(0);
}