DUP 不会重定向



我正在编写代码以将标准输出重定向到文件(例如将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。

赋值两边需要一对括号,否则就是布尔表达式的赋值(如果文件确实可以打开,则返回 0):

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

最新更新