簡體   English   中英

向后台進程發送信號

[英]sending a signal to a background process

我應該將哪個信號發送到后台進程以將其移至前台? 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將進程帶到前台

Foreground僅在控制台的上下文中相關,並且信號無法告訴進程前台的控制台是什么...

假設您在Unix上並從shell啟動該過程,您可以鍵入以下內容

  • 停止過程:: ^ Z.
  • 將流程移至后台:: bg
  • 回到前景:: fg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM