我应该将哪个信号发送到后台进程以将其移至前台? SIGTTIN,SIGTOU还是…?
gurudoglu。 我想你的请求的回应是在这里:
这不是直接控制作业是前景还是背景的信号。 这些工作是在shell(通常)的控制之下。
例如,在bash
下,如果你执行:
pax> sleep 3600 & pax> jobs
你会看到如下输出:
[1]+ Running sleep 3600 &
然后,您可以使用以下方法将该作业带回前台:
pax> fg %1 sleep 3600
(和终端等待)。
使用CTRL Z 确实发送一个信号给进程( SIGSTOP
),并把它放到后台,但唯一可以改变的信号是SIGCONT
(继续):
pax> fg %1 sleep 3600 ^Z [1]+ Stopped sleep 3600 pax> jobs [1]+ Stopped sleep 3600 pax> kill -CONT %1 pax> jobs [1]+ Running sleep 3600 &
这将指示进程再次开始运行,但不会将其带入前台。 为此,您需要fg
命令。
最好是考虑信号(影响进程)和前台/后台(通过确定是否等待进程来影响启动进程的shell)。
没有办法(在我知道的任何操作系统中)使用一个信号来把一个进程带到前台。
我相信你只能使用fg
把一个进程带到前台
前台只是在控制台的上下文中相关,并且信号不能告诉进程什么控制台前台…
假设你在Unix上,并从shell启动了这个进程,你可以输入以下内容