python如何终止os.system调用的程序 20

在python中用os.system()调用的一个程序需要手动Ctrl+C来终止其运行,我想实现在代码中自动地实现将其终止,而不需要Ctrl+C来终止,请问如何实现这个功... 在python中用os.system()调用的一个程序需要手动Ctrl+C来终止其运行,我想实现在代码中自动地实现将其终止,而不需要Ctrl+C来终止,请问如何实现这个功能?
ps:我这个程序是循环式地用os.system()来调用这个程序的,即用线程的方式实现的每隔4s钟调用一次这个程序,所以我希望能在调用完这个程序4s后自动终止这个程序来开始新一轮的调用,但是这个程序运行起来后需要Ctrl+C来终止它,所以我想问的是能不能用什么代码代替Ctrl+C的功能实现自动地终止。
展开
 我来答
yvonne112229
2019-05-24
知道答主
回答量:8
采纳率:0%
帮助的人:2.7万
展开全部
建议用subprocess
因为如果你的程序不会自动停止,那么用os.system(cmd),cmd会一直持续运行知道调用的程序返回结果。
subprocess可以开启一个子线程,在子线程里面调用,在你需要的时候就可以把这个子线程关掉,这样代码也更灵活
例如:
p = subprocess.Popen("your command")
#todo
#anything you want
time.sleep(10)
p.kill()
这段代码就是在"your command"运行10秒以后,把它杀掉
dashuo44
推荐于2017-12-15 · TA获得超过188个赞
知道小有建树答主
回答量:117
采纳率:100%
帮助的人:144万
展开全部
os.system调用程序放到后台,终止时kill掉它。
如在linux下:
os.system("my_program &")
os.system("pkill my_program")
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友476708a
2019-06-18
知道答主
回答量:2
采纳率:0%
帮助的人:1521
展开全部

process_tcpdump = subprocess.Popen(("./../start_tcpdump.sh %s" % (file_name)), shell=True, preexec_fn=os.setsid)

process_tcpdump.terminate()
process_tcpdump.wait()
try:
os.killpg(process_tcpdump.pid, signal.SIGTERM)
except OSError as e:
print(repr(e))

# subprocess.Popen 有个 preexec_fn 参数,它接受一个回调函数,并在 fork之后 exec 之前的间隙中执行它。我们可以利用这个特性对被运行的子进程做出一些修改,比如执行 setsid() 成立一个独立的进程组。

# 参考 网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
silmerusse
2014-03-26 · TA获得超过6640个赞
知道大有可为答主
回答量:2919
采纳率:33%
帮助的人:2102万
展开全部
你可以试试 subprocess.Popen()、Popen.kill()或Popen.terminate()
更多追问追答
追问
因为我说调用的程序中需要输入一些参数,而并非只指明程序的地址就可以,所以subprocess.Popen()在传入这些参数的时候有限制,不如os.system方便。所以还是想用os.system来完成。不知能不能办到我说要求的效果。
追答
Popen也可以传参数啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
steelsimon
2014-03-26 · TA获得超过133个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:104万
展开全部
os.system起来的程序,没有接口可以终止它。
用subprocess.Popen吧。它里面提供了丰富的库函数。
追问
因为我说调用的程序中需要输入一些参数,而并非只指明程序的地址就可以,所以subprocess.Popen()在传入这些参数的时候有限制,不如os.system方便。所以还是想用os.system来完成。不知能不能办到我说要求的效果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式