[解決済み] perror("...")とfprintf(stderr, "...")はいつ使えばいいのでしょうか?
2022-08-20 20:14:44
質問
マニュアルページといくつかのコードを読んでも、- と - の違いを理解するのに役立ちませんでした。
との違いを理解することはできませんでした。
perror("...")
または
fprintf(stderr, "...")
.
どのように解決するのですか?
呼び出し
perror
を呼び出すと、解釈された値である
errno
これは POSIX システムコールによって書き込まれるスレッドローカルのエラー値です (つまり、すべてのスレッドがそれぞれ
errno
). 例えば、もしあなたが
open()
を呼び出したら、エラーが発生した (すなわち、それは
-1
を返す) 場合は
perror
を呼び出し、実際のエラーが何であったかを確認することができます。 もし、その間に他のシステムコールを呼び出すと、その値は
errno
の値は書き直され
perror
を呼び出しても、以前のシステムコールでエラーが発生した場合は、問題の診断には全く役に立ちません。
fprintf(stderr, ...)
は、独自のエラーメッセージを表示するために使用することができます。 に印刷することで
stderr
に出力することで、エラー報告出力が
stdout
.
覚えておいてほしいのは
fprintf(stderr, "%s\n", strerror(errno))
は
perror(NULL)
の呼び出しは
strerror(errno)
の呼び出しは、印刷された文字列の値を生成します。
errno
に印刷される文字列を生成し、それを他のカスタムエラーメッセージと一緒に
fprintf
.
関連
-
C 構造体定義エラー: '['トークンの前に一次式があることが予想される
-
赤線の位置は必ずしも間違っていない:式は変更可能なlvalueでなければならないエラーは、この文とは別の場所に存在する可能性があります。
-
[解決済み] Windows用Cコンパイラ?[クローズド]
-
[解決済み] ⑭と⑯は何のためにあるのですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] printfは、フォーマット文字列の中に改行がないと、呼び出し後にフラッシュしないのはなぜですか?
-
[解決済み] floatとdoubleの違いは何ですか?
-
[解決済み] MakefileとCMakeを使ったコンパイルの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
C 構造体定義エラー: '['トークンの前に一次式があることが予想される
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
C/C++の再定義
-
[解決済み] Valgrind が初期化されていないバイトについて警告する
-
[解決済み] MIPSのネストされたForループと配列の使用
-
[解決済み] Windows用Cコンパイラ?[クローズド]
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] 難読化Cコードコンテスト2006。sykes2.cの解説をお願いします。
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?