何open()
ですか?これは何をしますか?
if (open("/dev/null", O_RDWR) < 0) {
die("error=open: %m");
}
/dev/null として知られるデバイスを開き、書き込まれたものをすべて破棄します。基本的にゴミ箱。
したがって、コードはそのデバイスを読み取り/書き込みモードで開いています。オープンに失敗した場合、表示さdie
れるエラー リテラルを strerror(errno) から返されたシステム エラー メッセージとともに出力する関数を呼び出し、プログラムを終了します。に渡されたリテラルdie
は、おそらくprintf
.
man 3 printfから:
m (Glibc 拡張。) strerror(errno) の出力を表示します。引数は必要ありません。
と呼ばれる glibc 関数はないようですdie()
。これはおそらくコード スニペットの作成者によって定義された関数であり、おそらくエラーを報告した後に関数を終了します。ただし、知識に基づいた推測しかできません。
man 2 open
ターミナルウィンドウで見るか、Googleで見てください。
このopen()
関数は、ファイルを開き、ファイル記述子を割り当てるために使用されます。失敗した場合open()
は、負の値を返します。
open("filename", O_RDWR)
と同等ですfopen("filename", "w")
/dev/null - これは、不要なストリームを切り捨てるために使用されます。stdout
ターミナルで と の両方を出力するコマンドをターミナルで実行しているとしますstderr
。エラーを切り捨てたい場合は、次のようなコマンドを実行できますcmd 2>/dev/null
。コンパイル中にコンパイラの警告のみを表示したい場合は、 のように実行できますmake 1> /dev/null
。