【发布时间】:2023-03-27 07:13:01
【问题描述】:
想象以下无限循环:
#!/bin/bash
i=0
while true; do
echo $i
i=$((i+1))
done
我正在从这样的 python 代码运行此代码:
def start(self):
filepath = '/home/sysop/.seiscomp3/program.sh'
if os.path.exists(filepath):
Command = "gnome-terminal -e '/home/alireza/.seiscomp3/program.sh'"
proc = subprocess.Popen(['bash','-c', Command])
else:
print ("The executable file is missing. Check ~/.seiscomp3 directory ...")
def stop(self):
proc.terminate()
上面的 python 代码与另一个程序(我们称之为 SC3)一起工作,并在新终端中启动/停止上面的 bash 代码。当我运行 SC3 程序时,它应该运行上述 python 代码中的“启动”函数。(工作正常)。但问题在于 stop 函数,它应该杀死在子进程中运行的 bash 代码。 我的问题是如何终止这个新终端及其进程?
【问题讨论】:
-
我认为问题在于“start”函数中创建的子进程PID无法从“stop”函数访问......有什么想法吗?
标签: python-3.x infinite-loop terminate