通过管道从子proc发送到父级的多维数组

我正在尝试将子进程中的二维数组发送到父进程并且非常失败。 不完全确定应如何做,但这是我尝试过的。

#include  #include  #include  #include  #include  #include  int fd[2]; int matrix[2][2]; int main () { pipe (fd); if (0 == fork()) { printf ("Start child process with pid: %d\n", getpid()); for (int i = 0; i < 2; i++) matrix[i][i] = 1; write (fd[1], matrix, 4); exit (0); } printf ("Start parent process with pid: %d\n", getpid()); read (fd[0], matrix, 4); printf ("Received %d\n", matrix[1][1]); return 0; } 

编译正确,但收到的值总是0而不是1.我做错了什么? (很多事情,我期待)

这是因为你误解了write的第三个参数是元素的数量。 write系统调用要求其第三个参数为字节数。

改变你的代码

 write (fd[1], matrix, 4); ... read (fd[0], matrix, 4); 

 write (fd[1], matrix, 4*sizeof(int)); ... read (fd[0], matrix, 4*sizeof(int));