c - ANSI警告なしでstdoutをファイルにリダイレクトする

原文 c ansi

プログラムの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のファイルにリダイレクトする方法はありますか?
答え
ANSI Cによる方法はfreopen()です。

if (freopen("output", "w", stdin) == NULL) {
    /* error occured */
    perror("freopen");
}
関連記事

c - Maven2 +ネイティブMavenプラグイン

c - HC-128 / 256をサポートするC暗号ライブラリ?

c - SWIGを使用してオプションの引数を持つTCL関数を作成する方法

c - 何らかのファイルアロケーションテーブルを使用してEEPROMに構造体を保存する

c - Ansi CのSOAPリクエストメッセージ

c - Solarisスレッドの最大数

c - Autotoolsを使用してライブラリをプログラムにリンクするには、Makefile.amとソースに何を表示する必要がありますか?

c++ - 十分に文書化されたオープンソースおよび高速C / C++画像操作ライブラリ。 「サイズ変更」のように、回転、色の変更、切り抜き[終了]

mysql - MySql dbと対話するCプログラムのコンパイルの問題

c - libcurl(7.19,7)がO​​SX(10.6.8)で_mdns_query_callbackを使用してクラッシュする