您好,我可以使用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);
}
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()
takes通常是第一个参数,它是指向我们正在处理的文件的指针,但是我的推断是substrings[0]
可能包含我们执行的命令而不是文件名。
而且,就像@aschepler所说的一样,请尝试发布一个更具描述性的问题,并附带错误消息和副作用,因为它对尝试解决您的问题的人很有帮助:)
最好。