求助各位大神!
一个父进程p0,创建两个子进程p1和p2;只使用信号相关机制作为通信手段,让p1打印出p2的pid,p2打印出p1的pid。目前的思路是由主进程记录两个子进程的PID,再分别将p1的PID通过信号发送给p2,将p2的PID通过信号发送给p1。但是不知道该如何实现?谢谢大佬们了!
int main()
{
pid_t pid1 = 0xFFFF, pid2 = 0xFFFF, proc1, proc2;
if(pid1 != 0 && pid2 != 0) // parent process?
pid1 = fork();
if(pid1 != 0 && pid2 != 0) // parent process?
pid2 = fork();
if(pid1 != 0 && pid2 != 0) // parent process?
{
// TODO
}
return 0;
}
一个父进程p0,创建两个子进程p1和p2;只使用信号相关机制作为通信手段,让p1打印出p2的pid,p2打印出p1的pid。目前的思路是由主进程记录两个子进程的PID,再分别将p1的PID通过信号发送给p2,将p2的PID通过信号发送给p1。但是不知道该如何实现?谢谢大佬们了!
int main()
{
pid_t pid1 = 0xFFFF, pid2 = 0xFFFF, proc1, proc2;
if(pid1 != 0 && pid2 != 0) // parent process?
pid1 = fork();
if(pid1 != 0 && pid2 != 0) // parent process?
pid2 = fork();
if(pid1 != 0 && pid2 != 0) // parent process?
{
// TODO
}
return 0;
}
pipe(fds);//初始化一条管道
if(!fork())
{
close(fds[0]);//关闭读端
write(fds[1], "你要传输的消息",strlen("你要传输的消息"));
}
else
{
close(fds[1]);//关闭写端
char buf[128] = {0};
read(fds[0], buf, sizeof(buf));
printf("%s\n",buf);
}这是我以前写的小例子,你可以参考参考,父子进程谁打开写端,谁打开读端由你的需求决定。fds[0]表示读端,fds[1]表示写端