向后台进程发送信号

时间:2009-12-04 01:09:24

标签: c linux signals

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

4 个答案:

答案 0 :(得分:16)

这不是直接控制作业是前景还是背景的信号。这些工作在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)。

答案 1 :(得分:7)

答案 2 :(得分:2)

没有办法(在我所知道的任何操作系统中)使用信号将进程带到前台。

我相信您只能使用fg

将流程带到前台

Foreground仅与控制台的上下文相关,并且信号无法告诉进程前台的控制台是什么...

答案 3 :(得分:1)

假设你在Unix上并从shell启动了这个过程,你可以输入以下内容

  • 停止过程:: ^ Z
  • 将流程移至后台:: bg
  • 回到前景​​:: fg