我有两个命令行程序,一个客户端应用程序和一个与其对话的服务器应用程序。
客户端依赖于后台运行的服务器。我可以通过以下两种方式启动:
java -jar server.jar & java -jar client.jar
但是,当我杀死客户机时,服务器仍然处于后台。是否有办法将这两者联系起来,以便如果客户端死了,服务器就会死?
发布于 2016-12-12 21:51:17
在后台运行服务器作业,并使用$!存储进程id。那就去查客户。客户端退出后,使用存储的pid关闭服务器,如下所示:
java -jar server.jar &
server=$!
java -jar client.jar
kill $server更短:不需要存储后台进程的PID,只有一个
java -jar server.jar &
java -jar client.jar
kill $!发布于 2016-12-12 21:51:33
没有办法链接它们,但您可以显式地管理流程。
java -jar server.jar & server_pid=$!
java -jar client.jar
kill $server_pid服务器在后台运行,然后客户端在前台运行。此时脚本会阻塞,因此当客户端退出时,脚本将继续执行下一个命令,该命令将杀死服务器。
https://stackoverflow.com/questions/41110163
复制相似问题