守护进程与孤儿进程

来源:互联网 发布:js === 编辑:程序博客网 时间:2024/05/18 06:24

    守护进程是生存期长的一种进程,它们常常在系统引导装入时启动,系统关闭时终止。守护进程有如下几个特点:

    1.所有的守护进程都是以超级用户(用户ID为0的root用户)的优先权运行;

    2.守护进程没有控制终端,一直在后台运行;
    3.守护进程的父进程都是init进程(1号进程)。
   什么是孤儿进程呢?

   父进程结束,子进程就成为孤儿进程,会由1号进程(init)领养。下面是孤儿进程示例代码:

/*
 * process_orphen.c
 *
 *  Created on: 2016-11-25
 *      Author: river
 */
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    pid_t pid;
    pid = fork();
    if(pid < 0)
    {
        perror("fork error");
        exit(1);
    }
    else if(pid > 0)
    {
        printf("%d deaded\n", getpid());
        exit(0);//父进程终止进程
    }
    else
    {
        sleep(4);
        printf("pid: %d, ppid: %d\n", getpid(), getppid());
    }

    return 0;
}

运行结果:

5036 deaded

pid:5037, ppid: 1

   上面的代码,我们创建一个子进程后终止父进程,5036是终止的父进程,5037是子进程,此时子进程的父进程ID是1,也就是init进程,也就是说在父进程被终止后,子进程被init进程领养。




0 0
原创粉丝点击