дуп не перенаправляет

Я пишу код для перенаправления 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.


person Owl_Prophet    schedule 01.03.2014    source источник


Ответы (1)


Вам нужна пара скобок вокруг присваивания, иначе это присваивание логическому выражению (которое возвращает 0, если файл действительно может быть открыт):

if ((newfd = creat("fout.txt", O_TRUNC | O_WRONLY)) == -1)
person 0x499602D2    schedule 01.03.2014