进程关系之作业控制(孤儿进程组)

1. 作业控制

作业控制是BSD在1980年增加的一个特性。一个作业只是几个进程的集合。作业控制要求以下三种形式的支持:

1). 支持作业控制的shell(C shell支持,Bourne shell不支持,而Korn shell视情况)。

2). 内核中的终端驱动程序必须支持作业控制。

3). 内核必须提供对某些作业控制信号的支持。

三个特殊字符可使终端驱动程序产生信号:

1). 中断字符(DELETE或Ctrl+C)产生SIGINT。

2). 退出字符(Ctrl+/)产生SIGQUIT。

3). 挂起字符(Ctrl+Z)产生SIGTSTP。

只有前台作业才能接受终端输入。如果后台作业试图读控制终端,则会产生信号SIGTTIN。该信号通常会暂时停止此后台作业,而shell则向有关用户发出这种情况的通知,然后用户就可以用shell命令将此作业转为前台作业执行。终端I/O和终端产生的信号总是从前台进程组连接到实际终端,对于SIGTTOU信号,后台进程组进程的输出释放出现在终端是可选的。如下:

#cat temp.txt & 在后台执行

[1] 1986

# hello world                提示符后出现后台作业的输出

                                     键入回车

[1] + Done cat temp.txt &

#stty tostop                 禁止后台作业输出至控制终端

# cat temp.txt &           在后台执行

[1] 1989

# hello world               提示符后出现后台作业的输出

#                                 键入回车, 发现作业已经停止

[1] + Stopped(SIGTTOU)   cat temp.txt &

#fg %1                       在前台恢复停止的作业

cat temp.txt                shell告诉我们现在哪个作业在前台

hello world                  这是该作业的输出

 

2. 孤儿进程组

一个父进程已经终止的进程称为孤儿进程(orphan process),这种进程由init进程收养。

孤儿进程组定义:改组中每个成员的父进程要么是该组的一个成员,要么不是该组所属会话的成员。

一个进程组不是孤儿进程组的条件是:该组有一个进程,它的父进程在属于同一会话的另一个组中。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Linux 中,僵尸进程孤儿进程都是指与父进程不再有联系的进程,它们通常是由于进程管理不当或程序错误导致的。 **僵尸进程**是已经完成执行任务,但其父进程还没有来得及处理其退出状态的进程。当进程完成执行后,它的退出状态(也称为退出码或终止状态)会被保存在系统中,直到父进程通过 `wait` 或 `waitpid` 等函数来获取该状态。如果父进程没有处理该状态,那么该进程就会成为僵尸进程,占用系统资源。要清理僵尸进程,可以使用 `kill` 命令向其父进程发送 `SIGCHLD` 信号,或者重新编写程序,使其正确处理子进程的退出状态。 **孤儿进程**是指其父进程已经退出或被终止,但其自身仍在运行的进程孤儿进程会被 `init` 进程进程号为 `1`)接管,`init` 进程会定期检查系统中是否有孤儿进程,并且将其的父进程设置为 `init` 进程。要避免孤儿进程的产生,可以在父进程退出之前,等待子进程的退出,或者将子进程的父进程设置为 `init` 进程。 可以使用 `ps` 命令来查看系统中的僵尸进程孤儿进程。使用以下命令可以查看所有僵尸进程: ``` ps aux | grep 'Z' ``` 其中,`aux` 选项用于显示所有进程,`grep 'Z'` 用于查找所有状态为 `Z` 的进程,即僵尸进程。 使用以下命令可以查看所有孤儿进程: ``` ps -ejH ``` 其中,`-e` 选项用于显示所有进程,`-j` 选项用于以层次结构的形式显示进程,`-H` 选项用于显示所有孤儿进程

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值