从makefile并行运行两个进程

Vis*_*dha 14 linux makefile

我试图运行服务器和客户端从makefile运行:

目标:

   ./server&
   ./client
Run Code Online (Sandbox Code Playgroud)

问题是服务器&永远不会返回控件,即使我认为它应该在后台运行.它一直在监听从未调用的客户端,因为makefile似乎没有从服务器获取控制权.我该如何解决这个问题?没有写任何额外的目标或脚本?

关于维沙尔

seh*_*ehe 17

您应该可以通过在单行上组合命令来完成此操作:

target:
     ./server& ./client
Run Code Online (Sandbox Code Playgroud)

一次将命令行交给shell($(SHELL))一行.

或者,您可以定义两个独立目标:

target: run_server run_client

run_server:
     ./server
run_client:
     ./client
Run Code Online (Sandbox Code Playgroud)

并使用-j选项运行make 以使其并行化构建步骤:

make -j2
Run Code Online (Sandbox Code Playgroud)

这似乎不是启动程序的最自然的解决方案(例如,用于测试),但如果您有大量可以部分并行构建的构建规则,则效果最佳.(对于make目标并行化的更多控制,请参见

.NOTPARALLEL

如果.NOTPARALLEL被提及为目标,那么即使‘-j’给出了选项,也会以串行方式运行make的调用.任何递归调用的make命令仍将并行运行配方(除非其makefile也包含此目标).此目标的所有先决条件都将被忽略.


mik*_*egg 2

server在后台运行。您可以使用 command 将其置于前台fg。然后用 Ctrl-C 杀死它

或者也许这个方法:killall server