比如说一个进程 fork 出子进程后,自身需要挂起,如何实现?
thanks.
一个进程通过调用fork后,首先是拷贝出自身进程控制块PCB的结构作为子进程的PCB,随后当程序挂起的时候,可以有两种状态,一种是处于可中断的睡眠状态(此时可以被信号或者其他中断唤醒),而另一种是不可中断的睡眠状态(只能被内核以显式wake_up()唤醒),这个过程是由内核的进程管理模块负责的,内核会修改当前运行的进程的PCB,并且保存此时相关的上下文环境到进程的TSS任务状态段中,然后再对PCB中的状态位进行修改,之后进程就真正挂起了。而此时fork出来的子进程其实还是与父进程共享同一堆栈段,这就涉及到了写时复制的机制。建议可以去看看操作系统的相关概念。比较详细
4 回答4.5k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
4 回答3.9k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
2 回答500 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
你说的挂起是不是指 suspend?
http://stackoverflow.com/questions/18984666/how-do-i-get-a-subprocess-to-suspend-execution-of-an-external-program-every-5-se