编写时C++中的输入重定向问题

Input redirection problems in C++ when writing

本文关键字:输入 重定向 问题 C++      更新时间:2023-10-16

你好,我可以使用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 >+ lsoutls: 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所说,请尝试发布一个更具描述性的问题,并附上错误消息和副作用,因为这对试图解决你的问题的人有帮助:(

最好。