2

組み込み Linux でプログラムを開発しています。printf私のプログラムはデーモンであり、 (stdout出力)でログを出力するログ機能があります。

そのため、組み込み Linux システムで telnet セッションを開いてプログラムを起動すると、telnet セッションに出力が表示されます。telnet セッションを閉じると出力がどうなるか気になります。出力はどこにリダイレクトされますか?

また、telnet セッションを閉じたときにstdoutが閉じられているかどうかを確認することはできますか? stdout が閉じられたときにログ機能が実行されないようにするためです。

4

2 に答える 2

0

ftellここは便利かも。エラーをチェックして、EBADFそれ以上の書き込みを停止できます。C では、開いていないファイル ハンドルに書き込むと、未定義の動作が発生します。

シェルのような環境を使用している場合、環境自体が強制終了される可能性があるため、telnet セッションを閉じることが問題になるかどうかはわかりません。そこでの振る舞いについてはよくわかりません。

于 2013-02-20T10:37:48.363 に答える
0

デーモンは、端末が閉じるときに生成するシグナルである SIGHUP を処理する必要があります。それを処理しないと、デーモンは telnet で終了します。

また、fd が切断されると、出力が失われます。一般に、ロギングには syslog() 呼び出しを使用する必要があります。

于 2013-02-20T11:42:26.613 に答える