我正在处理我的python脚本以启动服务器,可能在后台或不同的进程中,然后在杀死已启动的服务器之前进一步处理。
一旦剩余的处理结束,就杀掉已启动的服务器。
例如
server_cmd = 'launch_server.exe -source '+ inputfile
print server_cmd
cmd_pid = subprocess.Popen(server_cmd).pid
...
...
... #Continue doing some processing
cmd_pid.terminate() # Once the processing is done, terminate the server
启动服务器后脚本无法继续运行,因为服务器可能在无限循环中运行,正在侦听请求。是否有一种很好的方法可以在后台发送此进程,以便它不会出现命令行输入。
我正在使用Python 2.7.8
答案 0 :(得分:2)
启动服务器命令后脚本无法继续,这很奇怪。在subprocess
模块中,Popen
启动另一个子进程,而父进程(您的脚本)应该继续。
但是在您的代码中已经存在错误:cmd_pid
是int
对象,并且没有terminate
方法。您应该使用subprocess.Popen
对象来调用terminate
方法。
答案 1 :(得分:2)
进行小改动解决了问题
server_proc = subprocess.Popen(server_cmd, stdout = subprocess.PIPE )
server_proc.terminate()
感谢Xu在终止时进行更正。