编写时C++中的输入重定向问题
Input redirection problems in C++ when writing
你好,我可以使用dup2完美地读取文件,但在写入文件并使用以下命令添加时遇到了问题:
shell: ls >+ lsout
shell: cat lsout
这是处理写的dup2的C++代码:
else if(write == true)
{
int fd = open(rCommand[1],O_WRONLY | O_APPEND);
dup2(fd, 1);
close(fd);
execvp(substrings[0], substrings);
}
子字符串数组包含命令行中的参数,rCommand[1]是试图打开或写入的文件名。
我的理解是,ls>+lsout假设创建一个名为lsout的空文件,但在执行时只列出当前目录中的项。如有任何帮助,将不胜感激
运行ls >+ lsout
后,我发现它创建了一个名为+
而不是lsout
:的文件
$ ls >+ lsout
ls: cannot access 'lsout': No such file or directory
因此,cat lsout
不可避免地抛出一个错误:
$ cat lsout cat: lsout: No such file or directory
所以我想这需要先解决,然后再继续。此外,在进一步的研究中,我发现execvp(substrings[0], substrings);
语句可能是错误的,因为execvp()
通常将作为第一个参数作为指向我们正在处理的文件的指针,但我的推断是substrings[0]
可能包含我们执行的命令,而不是文件名。
而且,正如@aschepler所说,请尝试发布一个更具描述性的问题,并附上错误消息和副作用,因为这对试图解决你的问题的人有帮助:(
最好。
相关文章:
- 编写时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++的最佳方式