簡體   English   中英

Linux上的Popen新進程組

[英]Popen new process group on linux

我用Popen(Python 2.7,Shell = True)生成一些進程,然后向它們發送SIGINT。 似乎進程組負責人實際上是Python進程,因此將SIGINT發送到Popen返回的PID,這是bash的PID,不會做任何事情。

那么,有沒有辦法讓Popen創建一個新的流程組? 我可以看到有一個名為subprocess.CREATE_NEW_PROCESS_GROUP的標志,但它僅適用於Windows。

我實際上正在升級一些使用Python2.6運行的遺留腳本,對於Python2.6來說,默認行為是我想要的(即當我執行Popen時的新進程組)。

bash在等待前台子進程完成時不處理信號。 這就是發送SIGINT沒有做任何事情的原因。 此行為與進程組無關。

有幾個選項可讓您的子進程接收SIGINT

  1. 當使用Shell=True一個新進程時,請嘗試將exec預先添加到命令行的前面,以便將bash替換為您的子進程。
  2. 當使用Shell=True一個新進程時,使用& wait %-附加命令行。 這將導致bash在等待子進程完成時對信號做出反應。 但它不會將信號轉發給您的子進程。
  3. 使用Shell=False並指定子可執行文件的完整路徑。

暫無
暫無

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

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