1.简介
如果你在 C++ 项目里需要调用另一个程序——比如用 FFmpeg 转码视频、用 ImageMagick 处理图片,或者启动一个 Python 脚本——肯定经历过跨平台进程调用的痛苦。Windows 的 CreateProcess 和 Unix 的 fork/exec 完全两套 API,还要处理管道、等待、错误码……光是让程序在不同系统上都能运行就得写一堆条件编译。
这时候,tiny-process-library 就像给你配了个万能的'程序启动管家'。它是一个单头文件的 C++ 库,专门解决一件事:用统一的 API 在 Windows、Linux、macOS 上启动和管理外部进程,而且代码量极小,集成起来毫无负担。
它的特点有:
- 接口简洁,易于使用
- 支持同步 / 异步执行外部命令
- 支持捕获子进程的 stdout/stderr 输出
- 支持设置子进程的工作目录
- 支持终止子进程
2.安装与集成
1.手动集成(推荐新手)
将源码中的 process.hpp、process.cpp(Windows 还需 process_win.cpp,Linux/macOS 需 process_unix.cpp)复制到你的项目目录,直接包含头文件即可使用。
2.源码编译成库集成
git clone http://gitlab.com/eidheim/tiny-process-library
cd tiny-process-library
mkdir build
cd build
cmake ..
make ./examples
3.CMake 集成
如果你的项目使用 CMake,可以通过 add_subdirectory 集成:
# 添加库目录
add_subdirectory(tiny-process-library)
# 链接库
target_link_libraries(你的项目名 tiny-process-library)
3.核心使用示例
1.基础同步执行(阻塞等待进程结束)
执行一个简单命令,等待执行完成并获取退出码:
#include "process.hpp"
#include <iostream>
int main() {
// 执行命令:Windows 用 "cmd /c echo hello",Linux/macOS 用 "echo hello"
#ifdef _WIN32
TinyProcessLib::Process process("cmd /c echo hello world", ".");
#else
TinyProcessLib::Process process("echo hello world", );
exit_code = process.();
std::cout << << exit_code << std::endl;
;
}


