当一个会话中的后台作业写终端时会发生什么情况(SIGTTOU 和SIGTTIN信号)

在一个会话中只有前台进程组能够读写终端,但是当后台进程读写终端会发生什么情况呢。

1.上面的测试案例是测试写到终端的情形,执行这个程序之前,先执行命令  stty tostop ,禁止后台作业输出至控制终端。再执行上面的程序,用trace来追踪可见该进程收到了SIGTTOU信号并且停止了。

再把程序放在前台来,又能正常运行了

2.让我们再测试一下读会怎么样,测试代码如下

让我们用trace追踪,结果见下图,可见进程收到了SIGTTIN信号

再把该进程放到前台来运行,程序正常运行了。(输入aa目的是让read返回)

 

所以要在后台程序中把标准输入标准输出要重定向。

注:shell将作业转为前台进程组时,会将继续信号SIGCONT,送给该作业

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值