• fork子进程之间传输信息的方法(包含子进程与子进程之间区分的问题的解决)


    今天看到一道题,要求是父进程fork出两个子进程,子进程1需要给子进程2发送一个数据,然后子进程2再将这个数据发送给父进程

    具体思想如下.

    父进程fork出来的子进程的pid,只有父进程保存下来了,

    子进程1可以获取到父进程的pid,子进程2可以获取到子进程1的pid,但是子进程1得不到子进程2的pid,只能通过父进程发送.

    因为是先产生子进程1,再产生子进程2

    fork代码如下 pidChild[2]是全局变量.

    for(i = 0; i < 2; i++)

    {

      pidChild[i] = pid = fork();

    }

    执行了之后,在父进程中,pidChild[0],pidChild[1]将分别顺序地保存了子进程1,子进程2的pid

    而在子进程1中,因为是先创建下来的,所以pidChild[0]为其pid

    子进程2,是后创建下来的,所以继承了子进程1的pidChild[0](这里只是表示子进程2可以访问到子进程1的pid)

    而通过父子进程之间"读时共享,写时复制"原则

    子进程1与子进程2均继承了父进程变量i

    子进程1第一次创建的,所以那时的i值为0,

    子进程2第二次创建的,所以i的值为1

    这是区分子进程1与子进程2的重要依据

    区分代码为 if(0 == pid && i == 0) //子进程1

                   if(0 == pid && i == 1)//子进程2

    然后通过在fork前设置的信号函数,由父进程发给子进程1子进程2的pid(pidChild[1]),此时子进程1得到了子进程2的pid,

    子进程1再发信号给子进程2,最后由子进程2发送给父进程.

  • 相关阅读:
    JS判断页面是否加载完成
    简单的前端验证码
    如何让旧浏览器支持HTML5新标签
    JSON使用(4)
    JSON语法(3)
    JSON简介(2)
    JSON教程(1)
    jQuery-noConflict()
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/c-slmax/p/5243666.html
Copyright © 2020-2023  润新知