gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:35:56 24 4
gpt4 key购买 nike

您好,我可以使用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 >+ 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() takes通常是第一个参数,它是指向我们正在处理的文件的指针,但是我的推断是substrings[0]可能包含我们执行的命令而不是文件名。

而且,就像@aschepler所说的一样,请尝试发布一个更具描述性的问题,并附带错误消息和副作用,因为它对尝试解决您的问题的人很有帮助:)

最好。

关于c++ - 编写时C++中的输入重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60312728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com