有没有办法用Python启动/停止Linux进程?

8 投票
6 回答
16065 浏览
提问于 2025-04-15 14:04

我想要能够启动一个程序,然后之后再把它结束掉。

6 个回答

3

这是一个简单的函数,它使用了 subprocess 模块:

def CMD(cmd) :
    p = subprocess.Popen(cmd, shell=True,
                         stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE,
                         stderr=subprocess.PIPE,
                         close_fds=False)
    return (p.stdin, p.stdout, p.stderr)
14

这里有一个简单的Python脚本,它的功能是启动一个进程,检查这个进程是否在运行,等一会儿,然后把它杀掉,再等它结束,最后再检查一次。这个脚本使用了'kill'命令。在Python 2.6版本的子进程模块中有一个kill函数,但这个脚本是用2.5版本写的。

import subprocess
import time

proc = subprocess.Popen(["sleep", "60"], shell=False)
print 'poll =', proc.poll(), '("None" means process not terminated yet)'
time.sleep(3)
subprocess.call(["kill", "-9", "%d" % proc.pid])
proc.wait()
print 'poll =', proc.poll()

从输出的时间来看,进程大约在3秒后被终止,而不是像调用sleep函数所暗示的60秒。

$ time python prockill.py 
poll = None ("None" means process not terminated yet)
poll = -9

real    0m3.082s
user    0m0.055s
sys 0m0.029s
8

看看这个 subprocess 模块吧。
你也可以通过 os 模块使用一些底层的基本功能,比如 fork()

撰写回答