0
我正在写一个shell。它分叉背景和前景过程。我遇到了SIGTSTP信号问题。因此,在给出Ctrl^Z之后,由于该信号被传递到我的shell及其子进程(我的shell已分叉的所有后台进程和前台进程),因此会生成SIGTSTP。但是就像在实际的shell中一样,SIGTSTP仅被传递到前台进程,而不是后台进程。那么如何控制这种行为意味着阻止信号发送到我的外壳的后台进程?如何控制SIGTSTP信号到子进程?
我也试过setpgid()
,这意味着改变后台进程的pgid。但是一旦进程执行完成,setpgid()
将返回错误。
我也需要exec之后。我可以通过fg内建函数为foregorund带来一个后台进程。我已经在做信号处理器 – avd 2009-10-04 03:26:02
你做错了。就像我在最后一段所说的那样,给每个工作一个不同的'pgid'。当你想把工作带到前台时,使用'tcsetpgrp'来给这个终端的组控制。当你想把作业放到后台时,使用'tcsetpgrp'命令给你的shell的组端控制。 – ephemient 2009-10-04 23:58:58