Python Subprocess 去跑一个永远不停止的程序的时候如何 kill 或者 stop 呢?

2016-03-15 01:37:14 +08:00
 TigerS

现在有一个程序,除非 Ctrl + C 否则不会停止,我需要一个 Python 程序去跑这个程序(需要跑的这个程序时 Go 写的)

主要代码是

cmd = '%s --config %s ' % (CORE_PROG, CONFIG_FILE_NAME)

try:

        proc = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        output = json.loads(proc.communicate()[0]) # return the command output

        if proc.returncode != 0:
            raise Exception('Testing Fail: ' + str(output))

        sleep(20)

        # Should somehow stop the proc

尝试了很多办法, proc.kill(), proc.terminate(), proc.send_signal(signal.SIGTERM) 都不行

10470 次点击
所在节点    Python
23 条回复
huangxie
2016-03-16 09:45:02 +08:00
except Exception,e:
print "error:",e
pass
except KeyboardInterrupt,e:
print "ctrl+c"
pass
这是之前 http://www.quzhuanpan.com 的爬虫的一部分,或许有用
ry_wang
2016-03-17 16:07:09 +08:00
DravenJohnson
2016-03-18 23:17:01 +08:00
如果不需要和程序交涉的话,可以考虑 Popen 打开,不 PIPE 输出(除非你需要输出)然后用 win32ui 去 close window ( Only work on Windows )

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/263521

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX