IPC Pipe接收数据不正确

时间:2017-12-29 02:43:45

标签: c++ linux ipc

我目前正在尝试将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]);
}

父级接收的队列大小是正确的。但所有数据都是错误的。

我实际上要做的是让父进程使用子进程计算的队列。如果有任何人有更好的解决方案,我

0 个答案:

没有答案