gpt4 book ai didi

python - 在 python 中将 SIGINT 发送到 os.system

转载 作者:IT王子 更新时间:2023-10-29 01:21:43 25 4
gpt4 key购买 nike

我正在尝试使用 os.system() 在 python 中运行 Linux 命令 strace -c ./client。当我按下 Ctrl + C 时,我在终端上得到了一些输出。我必须在一分钟后以编程方式发送“进程正确停止”信号,并希望在文件中按 Ctrl + C 后生成的终端输出。伪脚本将非常有用。如果我使用 subprocess.Popen 然后从键盘发送 Ctrl + C 信号我没有在终端上得到输出,所以必须使用操作系统系统

最佳答案

在 Python 中,您可以使用 os.kill 以编程方式发送 Ctrl + C 信号.问题是,您需要将接收信号的进程的 pid,而 os.system 不会告诉您任何相关信息。为此,您应该使用 subprocess。我不太明白你所说的没有在终端上获得输出。

不管怎样,你可以这样做:

import subprocess
import signal
import os

devnull = open('/dev/null', 'w')
p = subprocess.Popen(["./main"], stdout=devnull, shell=False)

# Get the process id
pid = p.pid
os.kill(pid, signal.SIGINT)

if not p.poll():
print("Process correctly halted")

关于python - 在 python 中将 SIGINT 发送到 os.system,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27356837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com