【发布时间】:2021-07-24 16:07:39
【问题描述】:
我正在开发 UBUNTU,我有一个文件 main.py,里面有一个代码:
#!/usr/bin/env python3
# coding=utf-8
import os
import time
from subprocess import Popen, PIPE, call, signal
base_path = os.path.abspath('')
path_to_file = base_path + '/test_subprocess.py'
p = Popen(['gnome-terminal', "--", path_to_file])
time.sleep(2)
os.kill(p.pid, signal.SIGKILL)
我有 test_subprocess.py 的代码如下:
#!/usr/bin/env python3
# coding=utf-8
import time
def print_message():
while True:
print('I am working!')
time.sleep(0.5)
print_message()
我试图杀死子进程,但之后
os.kill(p.pid, signal.SIGKILL)
子进程仍在工作并打印'I am working!'
如何完成子进程以及如何关闭 gnome 终端? 如果我选择了完全错误的方式。你能告诉我工作的例子吗?
新版test_subprocess.py
#!/usr/bin/env python3
# coding=utf-8
import sys
from subprocess import signal
import time
def print_message():
while True:
print('I am working!')
time.sleep(0.5)
if signal.SIGKILL: # it is braking a loop when parent process terminate!
print('I am killing self!')
break
print_message()
我应该像上面那样做吗?
【问题讨论】:
-
test_subprocess.py 中的 signal.SIGKILL 能解决我的问题吗?我已经检查过了,它正在关闭子进程。这就是我所需要的吗?
-
请不要在问题中添加额外的问题(和答案)。每个问题页面应该是关于一个问题。更改/添加您的问题可能会使现有答案无效 - 请避免这种情况。有新问题可以ask another one
标签: python subprocess popen gnome-terminal