c - GNU Makefile并行执行两个文件

标签 c makefile gnu-make

我是第一次使用makefile,我想同时执行两个文件。它是一个服务器和一个客户端文件,每个文件都有自己的主文件,两个文件相互通信。到目前为止,我已经编写了以下 Makefile:

all: server client

server: server.c
        gcc server.c -o server
        ./server

client: client.c
        gcc client.c -o client
        ./client

所以我想先启动服务器,以便客户端之后可以连接到它。这是我的问题: 如果我只执行 makefile,服务器就会启动。是否可以在服务器之后直接启动客户端而不是一次只启动一个文件?

最佳答案

尝试从 Makefile 构建和运行程序是非常不寻常的(例如,运行自动回归测试除外。)

通常,您运行 make,然后运行代码。就个人而言,我会在另一个终端窗口中启动服务器,然后在第一个终端窗口中运行客户端。

但是如果您确实想从 Makefile 执行此操作,您可以尝试以下操作:

all: server client run

server: server.c
    gcc server.c -o server

client: client.c
    gcc client.c -o client

run:
    ./server &
    ./client
    killall server

最后一行在客户端完成后关闭服务器。如果服务器有一些其他的 self 关闭方式,这可能不是必需的,但如果没有,您最终会得到大量服务器进程的副本。

您可能会发现编写单独的 shell 脚本来运行测试会更容易。

关于c - GNU Makefile并行执行两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442723/

相关文章:

c - size_t 可移植性概念

c++ - Makefile 将程序移动到特定目录

linux - 如何告诉 "gmake"使用另一个版本的 GCC? (Linux)

makefile - 在gnu make中,静态模式规则中的先决条件可以有不同的后缀吗

Makefile 将 child 放在链上

c - 是 while(1); C 中未定义的行为?

c++ - 使用 Makefile 的交叉编译使用了错误的包含

c - 开发 iptables 模块的最佳方法是什么

必须仅包含在调试版本中的源文件的条件编译

c++ - 从其他 C++ 源调用函数不起作用