【问题标题】:dup does not redirectdup 不重定向
【发布时间】:2014-03-01 21:33:48
【问题描述】:

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

【问题讨论】:

    标签: c++ linux dup


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-05
      • 2019-09-15
      • 2018-01-24
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      相关资源
      最近更新 更多