无法终止/终止子进程

时间:2017-03-07 10:06:57

标签: python linux python-3.x process subprocess

我有一个python脚本,它也启动OpenVPN作为子进程。但是我发现自己完全无法杀死已启动的子进程。

p = Popen(["openvpn", "--config", conf], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
# do some stuff
p.terminate()
# continue to do other stuff

我正在使用htop监控进程列表,OpenVPN就不会停止,直到python脚本退出。

我试过:

  • p.terminate()
  • p.kill()
  • p.terminate(),然后是p.kill()
  • os.kill(p.pid,0)
  • os.kill(p.pid,signal.SIGINT)
  • os.kill(p.pid,signal.SIGKILL)

我还在杀戮尝试之前和之后添加了睡眠定时器,以验证它不仅仅是一个定时问题。

无论我尝试什么方法,脚本启动的OpenVPN子流程都不会死(由htop列为正在运行的进程),直到脚本退出。

如何杀死OpenVPN子流程?

1 个答案:

答案 0 :(得分:-2)

Linux子进程kill命令是kill -9 PID,你必须在python中实现。