从Makefile中杀死进程

时间:2011-04-04 21:43:29

标签: python makefile pid

我正在尝试编写一个makefile,它将复制我编写的客户端/服务器程序(实际上只是两个Python脚本,但这不是真正令人关注的问题)......

test:
    python server.py 7040 & 
    python subscriber.py localhost 7040 &
    python client.py localhost 7040;

所以我运行make test

我可以从client.py输入消息:

python server.py 7040 & 
python subscriber.py localhost 7040 &
python client.py localhost 7040;
Enter a message:

client输入空消息时,他会关闭连接并成功退出。现在,我如何自动关闭聊天室的subscriber(只是一个“倾听者”) - 这将依次退出server进程。

我试图使用pidof从这些调用中获取进程ID - 但不确定这是否是正确的路由。我不是makefile专家;也许我可以写一个快速的Python脚本,从我的makefile执行为我做的工作?任何建议都会很棒。


编辑

我已经编写了Python脚本路由,并且具有以下内容:

import server
import client
import subscriber
#import subprocess

server.main(8092)
# child = subprocess.Popen("server.py",shell=False)
subscriber.main('localhost',8090)
client.main('localhost', 8090) 

但是,现在我收到的错误是我的全局变量没有定义(我认为它与将main方法添加到我的server(以及subscriber和{{}直接相关1}},但我还没有走得那么远:)。这可能值得一个单独的问题......

这是我的服务器代码:

client

2 个答案:

答案 0 :(得分:5)

在脚本中使用普通旧bash,获取PID并使用kill

或者,更好的是,创建一个测试脚本来处理所有这些并从Makefile中调用 。一个run_tests.py,比方说。

您希望在Makefile之外保留尽可能多的逻辑。

答案 1 :(得分:0)

与'global'问题有关=>在handle_client中定义main并删除global message, client_count,...

相关问题