我正在尝试编写一个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
答案 0 :(得分:5)
在脚本中使用普通旧bash,获取PID并使用kill
。
或者,更好的是,创建一个测试脚本来处理所有这些并从Makefile中调用 。一个run_tests.py,比方说。
您希望在Makefile之外保留尽可能多的逻辑。
答案 1 :(得分:0)
与'global'问题有关=>在handle_client
中定义main
并删除global message, client_count,...
行