微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在父进程和子进程之间发送带有 pipe() 的矩阵?

如何解决如何在父进程和子进程之间发送带有 pipe() 的矩阵?

我像这样声明和分配矩阵:

int** prevMatrix = NULL;

prevMatrix = (int**)malloc(sizeof(int*) * (arraySize[0] + 2));
for (int i = 0; i < arraySize[0] + 2; i++)
    prevMatrix[i] = (int*)malloc(sizeof(int) * (arraySize[1] + 2));

我想知道如何将这个矩阵从子进程发送到父进程。 我尝试使用 pipe(),但我认为我在 write() 缓冲区大小中输入了错误的值。

如何将此矩阵发送到父进程?

解决方法

这是最好的例子之一,为什么有时最好不要分配双指针,而是分配一个单指针并做一些简单的算术来获得索引。

假设您需要一个维度为 mx 的矩阵 y。分配将是:

int *m = malloc(x * y * sizeof *m);

访问索引 (i,j) 处的元素将是:

m[i * x + j]

通过套接字 fd 发送值:

send(fd,m,x * y,0);

或者:

write(fd,x * y);

另一种方法是继续使用多维矩阵,但是您必须逐行发送,这更麻烦。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。