在一个会话中只有前台进程组能够读写终端,但是当后台进程读写终端会发生什么情况呢。
1.上面的测试案例是测试写到终端的情形,执行这个程序之前,先执行命令 stty tostop ,禁止后台作业输出至控制终端。再执行上面的程序,用trace来追踪可见该进程收到了SIGTTOU信号并且停止了。
再把程序放在前台来,又能正常运行了
2.让我们再测试一下读会怎么样,测试代码如下
让我们用trace追踪,结果见下图,可见进程收到了SIGTTIN信号
再把该进程放到前台来运行,程序正常运行了。(输入aa目的是让read返回)
所以要在后台程序中把标准输入标准输出要重定向。
注:shell将作业转为前台进程组时,会将继续信号SIGCONT,送给该作业