Python,如何在执行后终止“shell = True”子进程

时间:2013-09-16 10:37:59

标签: python subprocess

我在python脚本中执行以下命令:

#! /usr/bin/python

import shlex
import os
import subprocess
import string
import random
import signal



pro = subprocess.Popen("zcat production_dump_2013-09-16_12-00.sql.gz | PGPASSWORD=everything psql -d voylla_solr -h localhost -p 5432 -U nishant", shell=True)
pro.wait()
os.kill(pro.pid, signal.SIGTERM)

这给了我:

OSError: [Errno 3] No such process

我也尝试过使用

pro = subprocess.Popen("zcat production_dump_2013-09-16_12-00.sql.gz | PGPASSWORD=everything psql -d voylla_solr -h localhost -p 5432 -U nishant", shell=True)
pro.wait()
pro.kill()

这给了我:

OSError: [Errno 3] No such process

执行下一个命令后如何终止进程

1 个答案:

答案 0 :(得分:1)

Popen.wait等待进程终止,因此一旦返回就没有任何东西可以杀死。

一旦进程退出,你就不应该“杀掉它”。你应该做的唯一事情是收集它的返回码,Popen.wait为你做的。