printf を使用して stdout にメッセージを送信するプログラムを C でコーディングしましたが、出力をファイルにリダイレクトするのに問題があります (bash から実行)。
私はもう試した:
./program argument >> program.out
./program argument > program.out
./program >> program.out argument
./program > program.out argument
いずれの場合も、ファイル program.out が作成されますが、空のままです。実行終了後のファイルサイズは 0 です。
プログラムの実行時にリダイレクトを省略した場合:
./program argument
次に、printf を使用して stdout に送信されたすべてのメッセージがターミナルに表示されます。
この方法で出力をリダイレクトしても問題ない他の C プログラムがあります。それはプログラム自体と関係がありますか?引数を渡して?どこで問題を探す必要がありますか?
C プログラムに関するいくつかの詳細:
- stdin からは何も読み取らない
- BSD インターネット ドメイン ソケットを使用します。
- POSIX スレッドを使用します
- sigaction を使用して、SIGINT シグナルに特別なハンドラ関数を割り当てます。
- 多くの改行を標準出力に送信します(フラッシュする必要があると考えている人向け)
いくつかのコード:
int main(int argc, char** argv)
{
printf("Execution started\n");
do
{
/* lots of printf here */
} while (1);
/* Code never reached */
pthread_exit(EXIT_SUCCESS);
}