当前位置:  技术问答>linux和unix

关于进程的那些事

    来源: 互联网  发布时间:2016-12-28

    本文导语:  今天编了一个程序,查看了进程间关系 ,发现父进程在子进程挂掉之前先挂掉后,系统会将子进程托管给init进程。是这样吗?还是父进程挂之后会将子进程托管给父进程的父进程呢! | http:/...

今天编了一个程序,查看了进程间关系 ,发现父进程在子进程挂掉之前先挂掉后,系统会将子进程托管给init进程。是这样吗?还是父进程挂之后会将子进程托管给父进程的父进程呢!

|
http://en.wikipedia.org/wiki/Orphan_process

具体参考上面,楼主的意思是:父进程结束后,子进程是否会被父进程的父进程收养,也就是爷爷进程。答案是:不会,如果直接父进程挂了,init就会接管,不管它的爷爷或者什么的还健在。


#include 
#include 
#include 
 
int main(void)
{
        pid_t pids[10];
        int i;
 
        for (i = 9; i >= 0; --i) {
                pids[i] = fork();
                if (pids[i] == 0) {
                        sleep(i+1);
                        _exit(0);
                }
        }
 
        return 0;
}


执行上述代码,立刻执行 ps -ef 你会发现 a.out 的 PPID立即变为1, 而不是你的shell,所在的进程ID

|
http://en.wikipedia.org/wiki/Linux_startup_process

The startup function for the kernel (also called the swapper or process 0) establishes memory management (paging tables and memory paging), detects the type of CPU and any additional functionality such as floating point capabilities, and then switches to non-architecture specific Linux kernel functionality via a call to start_kernel ().

pid=0是一个叫swapper的进程,具体参考wiki

|
关于pid=0,我对这方面也不甚了解,不过根据wiki上的说明,Kernel startup stage,它是在内核初始化的时候用到,比如初始化内存管理、分页表,检测CPU类型等等。


对于你倒数第二个帖子,是个语文问题,没看明白你要问什么,呵呵:)

|
交给init 进程,我记得也是这样的。

|
父进程挂之后会将子进程托管给父进程的父进程
如果找不到, 会由init接管.

|
对,没错,就是init进程

|
父进程结束则直接有init接管。

|
内核start_kernel -> rest_init -> kernel_init线程 -> init_post-> run_init_process
然后这个0号线程就进入了无尽的的等待,cpu_idle

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux僵尸(zombie)进程介绍及清除
  • 进程Afork进程B,进程Bfor进程C,如果进程C退出发出SIGCHLD,A进程是否可以收到
  • Ubuntu查看内存,进程相关命令介绍
  • 如果一个server进程要fork许多子进程,但不等待子进程终止,也不希望子进程结束后处于僵进程状态直到父进程终止。请问可采用什么方法实现
  • linux下进程占用内存空间详解
  • 在多进程中父进程frok子进程,怎样让子进程自举,脱离父进程,而且父进程不退出
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • fock()开出的子进程的进程ID是否进程ID都大于父进程的?
  • android 4.0 托管进程介绍及优先级和回收机制
  • 父进程等待子进程n秒,如果子进程正常退出,父进程立即继续向下执行,如果子出现进程故障一直不退出,父进程等待n秒后继续向下执行,请问
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 多进程问题 子进程读取内容 读完挂起,父进程写 写入后唤醒子进程
  • 一个进程首先监听一个端口,等到有连接了就新开一个进程,让新进程来处理后面的通讯。请问母进程中已经打开了端口,子进程怎么来使用同一
  • 我在一个父进程中,生成了4个子进程,子进程的优先级是一样的。我现在想结束子进程。该如何做?
  • 子进程wait/waitpid//子进程不结束,父进程会等待子进程吗?
  • 在一个进程中我定义了几个全局变量,然后我又fork了几个子进程,子进程中是否可以各自对全局变量进行修改,如果各子进程都对其进行修改,
  • 怎样一次杀掉父进程创建的所有子进程?我在父进程中用kill(0,SIGKILL),结果父进程也给干掉了,参数0难道不是表示除自己外的所有同uid的进
  • 进程创建进程组后,然后创建该组中的进程,然后终止。这里的终止....?
  • 如何实现子进程根据父进程的信号来确定是否终止子进程???
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程 iis7站长之家
  • 如何通过进程号获得进程的一些信息,例如:进程运行的目录


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3