V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
wenyu1001
V2EX  ›  问与答

程序挂起怎么理解?

  •  
  •   wenyu1001 · May 18, 2016 · 3034 views
    This topic created in 3638 days ago, the information mentioned may be changed or developed.
    比如说一个父进程 fork 出子进程后,父进程挂起,如何实现?

    thanks.
    6 replies    2016-05-18 11:44:45 +08:00
    hxndg
        1
    hxndg  
       May 18, 2016
    没明白啥意思,你是说父进程调用 wait 或者 waitpid 么?
    jimzhong
        2
    jimzhong  
       May 18, 2016
    如果需要等待子进程,可以在父进程 fork 后立即调用 wait4 或者 waitpid ,这样父进程就会被阻塞。直到子进程状态变化。
    hxndg
        3
    hxndg  
       May 18, 2016
    @jimzhong 实际情况里是调用 wait4 比较多么?我不太明白哈, wait3/4 不是只比 wait 多一个返回资源概述的参数么?
    wenyu1001
        4
    wenyu1001  
    OP
       May 18, 2016   ❤️ 1
    @hxndg

    wait3 等待任意子 pid ,等价 waitpid(-1, status, options);
    wait4 等待指定 pid ,等价 waitpid(pid, status, options);

    http://linux.die.net/man/2/wait4
    imcczy
        5
    imcczy  
       May 18, 2016 via iPhone
    OS 内部有专门的数据结构来保存进程的相关信息,如寄存器等,每一次切换都会有进程数据的保存和恢复。一个进程应该有 running , ready , block 三个状态,具体的切换由专门的调度系统控制。
    jimzhong
        6
    jimzhong  
       May 18, 2016   ❤️ 1
    @hxndg 最新的 manual 里面 wait3 和 wait4 已经 obsolete 了,推荐使用 waitid 和 waitpid
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   747 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 20:57 · PVG 04:57 · LAX 13:57 · JFK 16:57
    ♥ Do have faith in what you're doing.