为什么我不能在我的C ++程序中进行unix重定向?

时间:2018-03-27 03:35:36

标签: c++ sh

如果我直接在Ubuntu上执行ls &> A.txt(重定向标准输出和错误),它会按预期工作。但是,在我的C ++中:

#include <cstdlib>

int main()
{
    system("ls &> A.txt;");
    return 0;   
}

它不起作用。 C ++程序只打印控制台上的所有文件,没有重定向到A.txt。为什么呢?

1 个答案:

答案 0 :(得分:0)

您正在执行的命令是:

ls &> A.txt;

在shell语言中,重定向绑定比&运算符更紧密。重定向是简单命令的一部分,而&&&||;等运算符连接在一起或终止简单命令列表。此外,在一个简单的命令中,命令本身是可选的;它只对重定向有效。因此,您的命令在后台执行ls而不执行重定向,并继续打开A.txt进行写入,但没有实际执行任何可以写入的内容。

你的程序正在做它应该做的事情。但我想你想要这个:

ls > A.txt &