tiny-process-library:轻量级 C++ 进程管理方案
在 C++ 项目里调用外部程序,比如用 FFmpeg 转码、启动 Python 脚本,或者执行系统命令,往往得面对 Windows 的 CreateProcess 和 Unix 的 fork/exec 两套完全不同的 API。光是处理管道、等待状态、错误码,还得写一堆条件编译来兼容不同系统。
这时候 tiny-process-library 就像个万能的'程序启动管家'。它是一个单头文件的 C++ 库,核心目标就是用统一的 API 在 Windows、Linux、macOS 上启动和管理外部进程。代码量极小,集成起来毫无负担。
安装与集成
源码直接引入
最简单的方式是把源码文件复制到你的项目目录。你需要 process.hpp 和 process.cpp(Windows 下还需要 process_win.cpp,Linux/macOS 需要 process_unix.cpp)。直接包含头文件就能用了,适合不想折腾构建工具的新手。
CMake 集成
如果你的项目已经在使用 CMake,推荐通过 add_subdirectory 方式引入,这样依赖管理更清晰:
# 添加库目录
add_subdirectory(tiny-process-library)
# 链接库
target_link_libraries(你的项目名 tiny-process-library)
编译示例
官方仓库提供了示例程序,克隆后可以直接运行测试:
git clone http://gitlab.com/eidheim/tiny-process-library
cd tiny-process-library
mkdir build && cd build
cmake ..
make ./examples
核心用法
同步执行命令
如果你需要阻塞主线程直到命令执行完毕,直接用 get_exit_status()。这适合那些必须等结果才能继续下一步的场景。
#include "process.hpp"
#include <iostream>
int main() {
// 注意命令格式差异:Windows 通常用 cmd /c,Linux/macOS 直接执行
#ifdef _WIN32
TinyProcessLib::Process process("cmd /c echo hello world", ".");
#else
TinyProcessLib::Process ;
exit_code = process.();
std::cout << << exit_code << std::endl;
;
}


