我正在尝试学习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);
}
sizeof(int)
字节。读取时同理。 - user4815162342fork
的进程共享指针,因此如果您提前分配了空间,则两者都可以使用。 - Dave