进程的分类

在Linux系统中,根据进程的特点,把进程可以分为三类:交互进程、批处理进程和守护进程。

1. 交互进程:是由shell启动的进程,它既可以在前台运行,也可以在后台运行。交互进程在执行过程中,要求与用户进行交互操作。简单来说就是用户需要给出某些参数或者信息,进程才能继续执行。

2.批处理进程:与windows原来的批处理很类似,是一个进程序列。该进程负责按照顺序启动其它进程。

3.守护进程:是是执行特定功能或者执行系统相关任务的后台进程。守护进程只是一个特殊的进程,不是内核的组成部分。许多守护进程在系统启动时启动,直到系统关闭时才停止运行。而某些守护进程只是在需要时才会启动,比如FTP或者Apache服务等,可以在需要的时候才启动该服务。

另外,根据进程状态的不同,又可以把进程分为另外三类:守护进程、孤儿进程和僵尸进程。

1.守护进程:(补充):所有守护进程都可以超级用户(用户ID为0)的优先权运行;守护进程没有控制终端;守护进程的父进程都是init进程(即1号进程)。

    但是,并非所有在后台运行的进程都是守护进程,因为我们可以使用符号“&”来使进程在后台运行。比如:./bin/process_test   &,执行该条命令后,相应的进程在后台运行。

2.孤儿进程:一个父进程退出后,它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作。

3.僵尸进程:一个子进程结束但是没有完全释放内存(在内核中的 task_struct没有释放),该进程就成为僵尸进程。

   当僵尸进程的父进程结束后该僵尸进程就会被init进程所收养,最终被回收。

僵尸进程会导致资源的浪费,而孤儿进程不会。

-------------------------------------------------------------

子进程成为孤儿进程

...
main(void)
{
    pid_t pid;
    pid = fork();
    if(pid < 0)
    {
        perror("fork error\n");
        exit(1);
    }
    else if(pid > 0)
    {
        // parent process
        printf("parent process dead\n");
        exit(0);
    }
    else
    {
        // child process
        sleep(3)
        printf("I'm an orphen\n");
        printf("pid: %d, ppid: %d\n", getpid(), getppid());
    }
}


---------------------------------------------------

子进程成为僵尸进程

...
main(void)
{
    pid_t pid;
    pid = fork();
    if(pid < 0)
    {
         perror("fork error\n");
         exit(1);
    }
    else if(pid == 0)
    {
         // child process
         printf("I'm a zombie process\n");
         printf("pid: %d, ppid: %d\n", getpid(), getppid());
         exit(0);
    }
    else
    {
         // parent process
         printf("pid: %d, ppid: %d\n", getpid(), getppid());
    }
}

--------------------- 
作者:零下10度C_zjw 
来源:CSDN 
原文:https://blog.csdn.net/zjwson/article/details/53321488 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值