簡體   English   中英

鍵盤中斷 bash 和 python 腳本並行運行

[英]Keyboard interrupt bash and python script running in parallel

我必須同時執行兩個操作,一個通過 bash 腳本,另一個通過 python 腳本。 到目前為止,我發現的最簡單的方法是創建一個父 bash 腳本來並行執行這兩個腳本,例如:

#!/bin/bash

bash process1.sh &
python3 process2.py &

我希望能夠使用鍵盤中斷 Ctrl+C 同時中斷兩個進程。 我嘗試添加

trap 'kill %1; kill %2' SIGINT

但是 python 腳本沒有按我的意願關閉。 在 python 腳本中,有一個循環應該在鍵盤中斷后停止並在此之后執行更多操作,如下所示

try:
    # do something

except KeyboardInterrupt:
    # Keyboard interrupt (Ctrl + C) detected
    pass

# then do some final operations

但是使用kill不會將鍵盤中斷傳播到 python 腳本,它只是按原樣終止程序。

有沒有辦法不殺死子 python 腳本,而是將 SIGINT 傳播給它?

嘗試這個:

trap 'kill -INT %1 %2' INT

kill %2向 Python 進程發送SIGTERM (默認信號),而不是 SIGINT。 您想在陷阱代碼中使用kill -INT

暫無
暫無

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

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