从makefile并行运行两个进程

时间:2012-02-09 23:39:32

标签: linux makefile

我正在尝试运行服务器和客户端以从makefile运行:

目标:

   ./server&
   ./client

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

此致 维沙尔

2 个答案:

答案 0 :(得分:16)

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

target:
     ./server& ./client

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

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

target: run_server run_client

run_server:
     ./server
run_client:
     ./client

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

make -j2

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

  

.NOTPARALLEL

     
    

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

  

答案 1 :(得分:1)

server在后​​台运行。您可以使用命令fg放入前台。然后用Ctrl-C

杀死它

或许这种方法:killall server