使用 dup2() 进行输入重定向
Input redirection using dup2()
所以我正在尝试使用 dup2(( 和 execvp(( 在 c++ 中实现以下命令行语句:wc < inputFile.txt
然后返回我的命令行。所以基本上我正在分叉一个进程并在子进程中执行该命令。 但是我的代码出现以下错误:wc: stdin: read: Bad file descriptor
这是我的代码:
int file_desc = open(fileName.c_str(), O_WRONLY | O_APPEND);
int stdin = dup(0);
dup2(file_desc,0);
execvp (args2[0], args2); // now execute
dup2(stdin, 0);
所以我的思考过程是我需要将标准(又名文件描述符表的索引 0(重定向到文件的文件描述符,因为 at index 始终是 stdin,这就是读取输入的地方。然后在我执行后,我用原始标准替换它。所以我对自己做错了什么感到困惑。
file_desc只打开用于写入 (O_WRONLY( - 尝试打开它进行阅读 (O_RDONLY(。
您可能还需要:
-
fork(( 和 exec(( 之间的 dup2(( 而不是保存和恢复 stdin - 更少的系统调用并在多线程应用程序中保存比赛。
-
关闭父流程中的file_desc
- 在 dup2 之后(以及 exec 之前(关闭子进程中的file_desc
相关文章:
- 编写时C++中的输入重定向问题
- 获取通过重定向传入的输入文件的名称?
- 使用 dup2() 进行输入重定向
- 重定向输入和输出时如何处理主文件I/O?
- 使用重定向命令从 stdin 读入的字符串"<"输入文件未正确附加
- 当使用带有stdin和stdout重定向的双进程管道时,如何避免stdin上的重复输入
- 如何将输入重定向与特殊整数作为分隔线和直至EOF
- 输入重定向读取整数和char C
- C++输入重定向导致文件参数工作时出错
- 如何在 c++ 中使用输入重定向添加整数
- 在while循环中使用输入重定向
- 如何在c++中从shell中获取作为输入重定向的文件名
- 使用输入重定向,如何在 C 中读取文件和获取字符串
- 带有 execv 和输入重定向的 C++ 流水线命令
- 如何处理输入重定向
- Python将输入重定向到子进程
- 检查CPP程序中的输入重定向
- C shell输入重定向保持打开状态
- C++检测输入重定向
- 通过输入重定向读取二进制文件c++的最佳方式