【一】Cmake 替代 make
理解:Cmake 中输入目标和源文件,可以自己调用 make 生成,更加简化,主流。
使用方法:
(1)先安装:需要 sudo 权限
# Ubuntu/Debian sudo apt update && sudo apt install cmake -y
# 验证安装(显示版本即成功)
cmake --version
(2)准备一个空目录
因为 Cmake 会产生一堆副文件,避免污染重要目录的源码,比如创建名为 build 的目录。
(3)三步上篮
在需要生成的源码同目录下创建 CMakeLists.txt 文件,添加下面的代码内容:第一行直接复制,第二行和第三行按照对应情况修改即可。
# 最低 CMake 版本要求(根据自己安装的版本调整,比如 3.10)
cmake_minimum_required(VERSION 3.10)
# 项目名(随便取,比如 myapp)
project(myapp)
# 生成可执行文件:可执行文件名为 myapp,编译的源文件是 main.c
add_executable(myapp main.c)
(4)效果
例如:用 cmake 指令调用 CMakeLists.txt 文件会直接生成 makefile 文件,再手动 make 指令。
如果要生成多个可执行程序:如果修改了源码,再重新 make /make clean 即可,和之前一样。
【二】poll 接口介绍
(1)函数原型
#include <poll.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
(2)参数说明
(1)第一个参数
参数描述:指向结构体 pollfd 类型的指针(管理多个文件描述符可以是 struct pollfd 类型的数组)。
struct pollfd {
int fd; // 要监听的文件描述符(-1 表示忽略此结构体)
short events; // 要监听的事件(输入参数,由程序设置)
short revents; // 实际发生的事件(输出参数,由内核填充)
};
监听事件选项:events 由你设置选项,revents 由 poll 调用之后由操作系统给你填写。
| 事件标识 | 含义(events 输入) | 含义(revents 输出) |
|---|

