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, если файл действительно можно открыть):

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]