c-如何使用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((缓冲区大小中放了一个错误的值。

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

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

假设您需要一个维度为xy的矩阵m。分配为:

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

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

m[i * x + j]

通过套接字fd:发送值

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

或者:

write(fd, m, x * y);

另一种选择是继续使用多维矩阵,但随后必须逐行发送,这更麻烦。

最新更新