gpt4 book ai didi

c - 向子进程发送数据

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:03 25 4
gpt4 key购买 nike

如果父进程有两个子进程,每个子进程都有自己的管道,那么父进程如何写入其每个子进程的管道?有什么方法可以调用进程可以指定特定 child ID 的函数吗?

最佳答案

在你 fork 之前,创建一个管道(fd 对)。

int pipe_fds[2];
if(0>pipe(pipe_fds[2])) /*handle err.*/;

fork,然后让父进程关闭读端,将管道的写端保存到pid_to_pipe表中:

if(0>(pid = fork())) /*handle err.*/;

if(pid){ //parent
if(0>save_pid_to_pipe(pid, pipe_fds[1])) /*handle err.*/;
close(pipe_fds[0]);
}

子进程需要关闭最新管道的写端:

close(pipe_fds[0]);

并且所有的写入都在父级的查找表中结束。然后它可以等待 pipe_fds[0]; 上的指令(读端是创建 child 时最新的读端),而父级可以通过 pid 选择相应的写端查找表。

您可以为查找表使用简单数组、排序数组、映射或散列。

关于c - 向子进程发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com