求助各位大神!
一个父进程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;
}

解决方案 »

  1.   

    你可以使用无名管道,无名管道可以用于父子进程传递消息,使用信号这个好像办不到int fds[2];
    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]表示写端