我正在使用 boost.process,尝试生成一个子进程并在父进程和子进程之间进行一些通信。我创建未命名的套接字对并将一端传递给子进程。我仍然想使用 limit_handles 来关闭所有其他 fd,但也保留该套接字对的一端。如何在 boost.process 中实现这一点?我没有找到任何关于如何实现这一目标的示例。
最佳答案
我想我知道该怎么做。基本上我需要创建一个新的初始化程序。像这样
struct PreservedFds : boost::process::detail::handler,
boost::process::detail::uses_handles {
std::vector<int> fds;
PreservedFds(std::vector<int> pfds) :
fds(pfds)
{}
std::vector<int>& get_used_handles() {
return fds;
}
};
然后我可以使用以下方法初始化我的子进程:
std::vector<int> pfds{5, 7, 9};
boost::process::child c("/usr/bin/ls", "/home", PreservedFds(pfds),
boost::process::limit_handles);
关于c++ - 如何继承boost.process中的某些fd,同时关闭所有其他fd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72483564/