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的功能实现自动地终止。 展开
ps:我这个程序是循环式地用os.system()来调用这个程序的,即用线程的方式实现的每隔4s钟调用一次这个程序,所以我希望能在调用完这个程序4s后自动终止这个程序来开始新一轮的调用,但是这个程序运行起来后需要Ctrl+C来终止它,所以我想问的是能不能用什么代码代替Ctrl+C的功能实现自动地终止。 展开
5个回答
展开全部
os.system调用程序放到后台,终止时kill掉它。
如在linux下:
os.system("my_program &")
os.system("pkill my_program")
如在linux下:
os.system("my_program &")
os.system("pkill my_program")
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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() 成立一个独立的进程组。
# 参考 网页链接
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以试试 subprocess.Popen()、Popen.kill()或Popen.terminate()
更多追问追答
追问
因为我说调用的程序中需要输入一些参数,而并非只指明程序的地址就可以,所以subprocess.Popen()在传入这些参数的时候有限制,不如os.system方便。所以还是想用os.system来完成。不知能不能办到我说要求的效果。
追答
Popen也可以传参数啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
os.system起来的程序,没有接口可以终止它。
用subprocess.Popen吧。它里面提供了丰富的库函数。
用subprocess.Popen吧。它里面提供了丰富的库函数。
追问
因为我说调用的程序中需要输入一些参数,而并非只指明程序的地址就可以,所以subprocess.Popen()在传入这些参数的时候有限制,不如os.system方便。所以还是想用os.system来完成。不知能不能办到我说要求的效果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询