如何解决与Boost中的dup2类似的功能
我想做这样的事情
acceptSocket = accept(...);
if (fork() == 0) {
// ..
dup2(acceptSocket,1);
dup2(acceptSocket,2);
execvp(/*some command*/);
}
现在,我将转向C ++ boost,我想做同样的事情。有没有类似的东西?可能是Boost Process和套接字流,但我不太清楚。预先感谢。
解决方法
您可以使用Boost Process:https://www.boost.org/doc/libs/1_74_0/doc/html/boost/process/posix/fd.html
此属性使您可以修改标准文件以外的文件描述符 个(0,1,2)。
它提供了绑定功能,该功能实现dup2和close。
因此,例如:
#include <boost/process.hpp>
namespace bp = boost::process;
using bp::posix::fd;
int main() {
int acceptSocket /* = accept(...) */;
bp::child child(
bp::search_path("someprogram.exe"),fd.bind(1,acceptSocket),fd.bind(2,acceptSocket));
child.wait();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。