
1、父进程
指已创建一个或多个子进程的进程。在UNIX里,除了进程0以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程。
2、子进程
指的是由另一进程(对应称之为父进程)所创建的进程。子进程继承了对应的父进程的大部分属性,如文件描述符。在Unix中,子进程通常为系统调用fork的产物。在此情况下,子进程一开始就是父进程的副本,而在这之后,根据具体需要,子进程可以借助exec调用来链式加载另一程序。
扩展资料
父子进程之间的关系
1、关于资源
子进程得到的是除了代码段是与父进程共享的意外,其他所有的都是得到父进程的一个副本,子进程的所有资源都继承父进程,得到父进程资源的副本,既然为副本,也就是说,二者并不共享地址空间。两个是单独的进程,继承了以后二者就没有什么关联了,子进程单独运行。
2、关于文件描述符
继承父进程的文件描述符时,相当于调用了dup函数,父子进程共享文件表项,即共同 *** 作同一个文件,一个进程修改了文件,另一个进程也知道此文件被修改了。
参考资料来源:百度百科-父进程
参考资料来源:百度百科-子进程
用pstree命令就看到进程之间的关系了,所有进程都是由最开始的init创建的,父进程逐个创建子进程。大致是这样的(括号里是pid)
$pstree -p
init(1)-+-acpid(4555)
|-atd(18593)
|-auditd(4256)-+-audispd(4258)---{audispd}(4261)
|`-{auditd}(4257)
|-automount(4536)-+-{automount}(4537)
| |-{automount}(4538)
| |-{automount}(4541)
| `-{automount}(4544)
....(中间省略)....
|-xfs(4692,xfs)
自己用命令查一下吧,比较清晰
父子进程
在linux系统里面,子进程由父进程fork而来,而所有的进程都是由init进程或其子进程fork而来,即init进程是所有进程的祖先。
父子进程的运行是相对独立的,一方的退出不会导致另一方退出。
进程组和会话
Session特点
session可以在任何时候创建,调用setsid函数即可,session中的第一个进程即为session的leader,leader是不能变的。常见的创建session的场景是用户登录,启动bash进程时将会创建新的session,bash进程会作为session的leader,随后bash里面运行的进程(不特殊处理)都将属于这个session。
session的主要特点是当session的leader退出后,session中的所有其它进程将会收到SIGHUP信号,其默认行为是终止进程,即session的leader退出后,session中的其它进程也会退出。
如果session和tty关联的话,它们之间只能一一对应,一个tty只能属于一个session,一个session只能打开一个tty。当然session也可以不和任何tty关联。
进程的启动方式:
1)前台启动:用户输入命令,直接执行程序
2)后台启动:在命令行尾加入“&”符号
要使终端关闭时进程不退出,有以下几种情况:
1)用户进程拦截SIGHUP信号。
2)使用户进程和bash进程不在一个session。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)