perror を使用する必要がある場合と使用しない場合はいつですか? 例を見て、ローカライズについて何もない、perror に渡すことができるもの、またはコマンドライン インタープリターやその他の C プログラムのようなものを実装する場合に perror を使用する必要がある場合など、この例はより良いものになると思います..
2 に答える
いつperrorを使用する必要があり、いつ使用しないのですか?
stderrに書き込まれたerrnoに対応するエラーの説明が必要な場合は、perrorを使用します。
私は例を見て、例はもっと良いかもしれないと思います。例えば、ローカライズについては何もありません。
例は問題ありません。議論の場所はありません。そこにローカリティが必要な場合は、独自に設計する必要があります。結局のところ、それはあなたのプログラムの議論です...説明を注意深く読むと、 strerrorへのリンクに気付くでしょう。このページでは、エラーメッセージの局所性が実装によってどのように処理されるかを説明します。
私が恐怖に渡すことができるもの
実際、そのページには、何を渡すかが正確に示されています。「...s...が指す文字列」。文字列は、最初の「\0」で終わる文字のシーケンスです。「文字列リテラル」はサイレントに配列に変換され、配列を関数に渡すと、その配列はサイレントにポインターに変換されることを忘れないでください。
コマンドラインやその他のCプログラムのようなものを実装する場合にperrorを使用する必要がある場合。
stderrは、コマンドライン開発専用ではありません。デーモンについて考えてみましょう。プロセスをデーモンとしてcrontabに追加すると、cron.dはstderrを電子メールに送信します。さらに、さまざまなGUIツールキットがstderrをフリーオープンして、エラーメッセージがstderr.logなどに書き込まれる場合があります...
の主な利点perror
は、標準化されたメッセージを生成することです。たとえば、fopen
見つからないファイルにアクセスしようとすると、メッセージは常に「そのようなファイルまたはディレクトリはありません」となります。これにより、(多くのプログラムが同じことを言うために異なるメッセージを生成するのではなく) エラー メッセージをよりよく理解できるようになりますが、エラー メッセージ/タイプを検索するために汎用ユーティリティを使用できるようにもなります。
それを使用しない唯一の本当の理由は、使用したシステムまたはライブラリの呼び出しが設定されていない場合ですerrno
。標準出力が利用できない場合でも、strerror
代わりに使用できます。