发送信号到后台进程

我应该将哪个信号发送到后台进程以将其移至前台? SIGTTIN,SIGTOU还是…?

这不是直接控制作业是前景还是背景的信号。 这些工作是在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启动了这个进程,你可以输入以下内容

  • 停止进程:: ^ Z
  • 将进程移至背景:: bg
  • 回到前景:: fg