1

我一直在用boost 1.65,没改代码,更新boost到1.71版本,现在突然boost::process::child("command-in-path")不继承执行进程的环境了。如何恢复行为,是否可以不每次都解析命令以在路径中找到可执行文件?

4

1 回答 1

3

我还没有检查行为是否真的改变了,但我知道有一种方法可以明确允许 Boost 搜索路径:

请记住,搜索路径很容易成为安全问题,因为它可能会遭到破坏,或者攻击者可以利用路径设置的知识来拦截可执行文件。这就是为什么您希望search_path默认为 OFF 的原因(除了system传统上不安全的接口)

活在魔杖盒上

#include <boost/process.hpp>

int main() {
    namespace bp = boost::process;

    bp::child c(
        bp::search_path("date"),
        std::vector<std::string> { "+%s" });
    c.wait();
}
于 2021-02-16T15:42:13.130 回答