簡體   English   中英

Python:將 Ctrl-C 轉發到子進程

[英]Python: Forwarding Ctrl-C to subprocess

我在 Python 3.6 中有一個 Slurm srun 包裝器,它驗證命令行參數,然后允許真正的程序使用這些參數運行。 如果命令掛起,我希望將 Ctrl-C 傳遞給子進程。 我不關心程序的標准輸入/輸出/錯誤; 我希望用戶與它進行交互,就好像沒有 python 包裝器一樣。 這可行,但沒有辦法用 subprocess.run() 發送信號嗎?

try:
    cmd = subprocess.Popen(['/usr/bin/srun'] + argv[1:])
    cmd.wait() 
except KeyboardInterrupt:
    cmd.send_signal(signal.SIGINT)

我不認為這可以用 run() 來完成,但 Popen 可以做到這一點。 通過此更改,我可以從 srun 獲取所有輸出(即使在 Ctrl-C 之后),以及捕獲 srun 的退出值。

try:
    with subprocess.Popen(['/usr/bin/srun'] + argv[1:]) as cmd:
        cmd.wait()
except KeyboardInterrupt:
    cmd.send_signal(SIGINT)
exit(cmd.returncode)

暫無
暫無

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

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