dup不重定向

时间:2014-03-01 21:33:48

标签: c++ linux dup

我正在编写代码来将stdout重定向到一个文件(例如ls被返回到文件的结果),而dup2()函数不会重定向我的输出。这是我的代码:

void testDup()
{
    int newft;
    if(newfd = creat("fout.txt", O_TRUNC|O_WRONLY) == -1)
    {
        cout << "Open failed"<< endl;
        exit(1);
    }
    dup2(newfd, 1);
    cout << "this should be in the new file" < endl;
}

这不起作用。我只是将ls的输出输出到终端窗口。我已经采取措施检查dup2()确实返回1,而不是-1。

1 个答案:

答案 0 :(得分:3)

你需要在赋值周围使用一对括号,否则它是对布尔表达式的赋值(如果确实可以打开文件则返回0):

if ((newfd = creat("fout.txt", O_TRUNC | O_WRONLY)) == -1)