我正在尝试运行服务器和客户端以从makefile运行:
目标:
./server&
./client
问题是服务器&即使我认为它应该在后台运行,也永远不会返回控件。它一直在监听从未调用的客户端,因为makefile似乎没有从服务器获取控制权。我该如何解决这个问题?没有写任何额外的目标或脚本?。
此致 维沙尔
答案 0 :(得分:16)
您应该可以通过在一行上组合命令来完成此操作:
target:
./server& ./client
一次将命令行交给shell($(SHELL)
)一行。
或者,您可以定义两个独立目标:
target: run_server run_client
run_server:
./server
run_client:
./client
并使用-j
选项运行make以使其并行构建步骤:
make -j2
这似乎不是启动程序的最自然的解决方案(例如,用于测试),但如果您有大量可以部分并行构建的构建规则,则效果最佳。 (为了更多地控制make
- 目标的并行化,请参阅
如果提到
.NOTPARALLEL
作为目标,则即使提供了‘-j’
选项,也会以串行方式运行make的调用。任何递归调用的make命令仍将并行运行配方(除非其makefile也包含此目标)。该目标的任何先决条件都将被忽略。
答案 1 :(得分:1)
server
在后台运行。您可以使用命令fg
放入前台。然后用Ctrl-C
或许这种方法:killall server