默认子进程与父进程属于同一个进程组,所以注意对接受到的信号的处理方式
fork()时,子进程继承了父进程的进程组ID,所以父子进程默认属于同一个进程组,又因为同一个进程组的进程可以接受来自同一终端的各种信号所以当希望用键盘发送信号(如按下Ctrl+C)时,父子进程对接收到的父子进程有不同的处理方式时,那么子进程就不能继承父进程的处理该信号的函数,要在子进程的代码中单独注册处理该信号的函数。
fork()创建子进程就是父进程的一份拷贝,大部分属性都继承过来,但仍有部分属性不同。
》真实用户ID和组ID,有效用户ID和组ID。
》进程组ID
》session ID
》所有打开文件及文件的偏移量。
》控制终端
》设置用户ID和设置组ID标记位
》根目录和当前工作目录
》文件默认创建的权限掩码
》可访问的内存区段
》环境变量及其他资源分配
》进程ID
》运行时间记录,timer等
》父进程对文件的锁定
来源:父子进程属性异同
·········································································································
来源:进程】进程组
(1)进程组,也称之为作业,BSD与1980年前后向UNIX中增加的一个新特性,代表一个或多个进程的集合。每个进程都属于一个进程组,在waitpid函数和kill函数的参数中都曾经使用到,操作系统设计的进程组的概念,是为了简化对多个进程的管理。
当父进程创建子进程的时候,默认子进程与父进程属于同一个进程组,进程组是一个或多个进程的集合,通常它们与一组作业相关联,默认子进程与父进程属于同一个进程组。进程组ID等于进程组第一个进程ID(组长进程)。所以,组长进程标识:其进程组ID等于其进程ID.
组长进程可以创建一个进程组,创建该进程组的进程,然后终止,只要进程组中有一个进程存在,进程组就存在,与组长进程是否终止无关。
(2)kill发送给进程组
使用 kill -n -pgid 可以将信号 n 发送到进程组 pgid 中的所有进程。例如命令 kill -9 -4115 表示杀死进程组 4115 中的所有进程。
————————————————
版权声明:本文为CSDN博主「月雲之霄」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/isunbin/article/details/88855114
总结
以上是生活随笔为你收集整理的默认子进程与父进程属于同一个进程组,所以注意对接受到的信号的处理方式的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: ubuntu 虚拟机更改/修改root密
- 下一篇: 汇编--INT 10H功能