如果我直接在Ubuntu上执行ls &> A.txt
(重定向标准输出和错误),它会按预期工作。但是,在我的C ++中:
#include <cstdlib>
int main()
{
system("ls &> A.txt;");
return 0;
}
它不起作用。 C ++程序只打印控制台上的所有文件,没有重定向到A.txt
。为什么呢?
答案 0 :(得分:0)
您正在执行的命令是:
ls &> A.txt;
在shell语言中,重定向绑定比&
运算符更紧密。重定向是简单命令的一部分,而&
,&&
,||
和;
等运算符连接在一起或终止简单命令列表。此外,在一个简单的命令中,命令本身是可选的;它只对重定向有效。因此,您的命令在后台执行ls
而不执行重定向,并继续打开A.txt
进行写入,但没有实际执行任何可以写入的内容。
你的程序正在做它应该做的事情。但我想你想要这个:
ls > A.txt &