保护输入和输出文件描述符时出错
Error safeguarding the input and output file descriptors
好吧,我正在做一个管道来连接我的进程的子进程。首先,我试图保护我的fds,这样我以后就可以访问它们来获取一些东西,但不知何故,它在复制fds时会被卡住。
int pipeFd [2];
int pid;
pipe (pipeFd);
//Safeguard of the Original FDs
int fdSG [2];
perror ("fdsg create");
dup2 (1, fdSG [1]);
perror ("dup2 sfg1");
dup2 (0, fdSG [0]);
perror ("dup2 sfg2");
dup2 (pipeFd [1], 1);
程序卡在此处显示的最后一条指令中。
终端输出如下:
fdsg create: Success
dup2 sfg1: Bad file descriptor
dup2 sfg2: Bad file descriptor
dup2: Bad file descriptor
你们中有人知道为什么会发生这种事吗?
根据您显示的代码,您还没有初始化fdSG
。这是不对的,dup2
的参数都需要是有效的文件描述符。
由于您似乎想要复制fd而不是替换现有的fd,因此应该使用dup
作为这些备份副本,它会选择一个空闲的fd
并使用它。(或者,您也可以将fdSG
初始化为有效的fds)。
来自手册页:
CCD_ 6使用编号最低的未使用描述符作为新描述符。
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 使用VerQueryValue检索应用程序的文件描述
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- 保护输入和输出文件描述符时出错