首页 > 解决方案 > 使用 boost 创建具有自定义环境的子进程

问题描述

文档提升没有提供任何使用process::child(...).
给出了一个示例,process::system(...)但该函数system的操作可能较少(例如管道或 waitpid),因此如果可能,我希望有一个完整的示例process::child

标签: c++boostboost-process

解决方案


最后的答案和评论已经很老了,但我可以确认boost::process::child在 Ubuntu 18.04 下使用 Boost 版本 1.65 可以使用环境参数。关于那个的文档很薄,所以我不得不自己找出:

std::string command = "/usr/bin/something";
ipstream pipe_stream;

// Get current env
auto env = boost::this_process::environment();
// Add something
env["CHINESE_FOOD"] = "GOOD";
// Change something
env["CHINESE_FOOD"] = "GREAT";
// Delete something
env["CHINESE_FOOD"].clear();

boost::process::child childProc(command, env, std_out > pipe_stream);

当然,如果不需要环境,它会自动从父进程继承

std::string command = "/usr/bin/something";
ipstream pipe_stream;

boost::process::child childProc(command, std_out > pipe_stream);

推荐阅读