我目前正在尝试将std::queue<std::pair<KInstruction*, int>>
变量从子进程传递给父进程
但是,父进程无法更正的数据。父级收到的队列中的所有std::pair
看起来都是NULL, [some random int]
,但它应该是some address, 1 or -1 or 0
。
这就是我的工作。
extern::queue<std::pair<KInstruction*, int>> queue;
std::queue<std::pair<KInstruction*, int>> tmp;
if (pid == 0) {
...
compute queue
...
tmp = queue
close(fd[P1_READ]);
close(fd[P1_WRITE]);
// tmp is the queue variable
if (write(fd[P2_WRITE], &tmp, sizeof(tmp)) < 0) {
perror("Child: Failed to write response value");
exit(EXIT_FAILURE);
}
close(fd[P2_READ]);
close(fd[P2_WRITE]);
} else {
wait(NULL);
close(fd[P2_READ]);
close(fd[P2_WRITE]);
read(fd[P1_READ], &tmp, sizeof(tmp));
close(fd[P1_READ]);
close(fd[P1_WRITE]);
}
父级接收的队列大小是正确的。但所有数据都是错误的。
我实际上要做的是让父进程使用子进程计算的队列。如果有任何人有更好的解决方案,我