Перенаправить стандартный вывод в файл без предупреждений ANSI - PullRequest
2 голосов
/ 31 августа 2011

Я пытался перенаправить STDOUT программы в файл.Пока этот код работает хорошо:

FILE *output = fopen("output","w");
if (dup2(fileno(output),1) == -1)
{
    /* An error occured. */
    exit(EXIT_FAILURE);
}

Проблема в том, что я пытаюсь придерживаться ANSI C, а fileno не является ANSI.Когда я компилирую с помощью gcc, я получаю предупреждения:

gcc -Wall -ansi -pedantic
warning: implicit declaration of function ‘fileno’

Можно ли вообще перенаправить STDOUT в файл в ansi C?

1 Ответ

2 голосов
/ 31 августа 2011

ANSI C способ сделать это freopen():

if (freopen("output", "w", stdin) == NULL) {
    /* error occured */
    perror("freopen");
}
...