我正在调试一个网络项目,其中涉及3个程序的交互,即一个服务器、两个不同的客户端。但是我发现启动和停止它们进行调试很困难。到目前为止我尝试过的一些方法:
启动3个终端。跑步
./server
,./client1
,./client2
。这种方法的问题是我需要在窗口之间来回切换。启动 1 个终端。将这些放入脚本中:
./server &;./client1 &;./client2 &
.运行脚本。这种方法的问题是调试后很难杀死进程。需要查找 PID 和类型kill <PID>
。
有一个更好的方法吗?在这种情况下人们通常如何调试?
答案1
将这样的内容作为您的启动脚本:
./server & server_pid=$!
./client1 & client1_pid=$!
./client2 & client2_pid=$!
echo 'kill "$@"' "$server_pid $client1_pid $client2_pid" >.kill.sh
并调用./kill.sh
杀死所有进程。关键点是用来$!
检索最后一个后台命令的 PID,您可能更喜欢其他方法来存储它并稍后使用它。