1

open()ですか?これは何をしますか?

if (open("/dev/null", O_RDWR) < 0) {
  die("error=open: %m");
}
4

3 に答える 3

2

/dev/null として知られるデバイスを開き、書き込まれたものをすべて破棄します。基本的にゴミ箱。

したがって、コードはそのデバイスを読み取り/書き込みモードで開いています。オープンに失敗した場合、表示さdieれるエラー リテラルを strerror(errno) から返されたシステム エラー メッセージとともに出力する関数を呼び出し、プログラムを終了します。に渡されたリテラルdieは、おそらくprintf.

man 3 printfから:

m (Glibc 拡張。) strerror(errno) の出力を表示します。引数は必要ありません。

と呼ばれる glibc 関数はないようですdie()。これはおそらくコード スニペットの作成者によって定義された関数であり、おそらくエラーを報告した後に関数を終了します。ただし、知識に基づいた推測しかできません。

于 2012-08-25T14:20:18.190 に答える
1

man 2 openターミナルウィンドウで見るか、Googleで見てください。

このopen()関数は、ファイルを開き、ファイル記述子を割り当てるために使用されます。失敗した場合open()は、負の値を返します。

于 2012-08-25T14:15:21.593 に答える
1

open("filename", O_RDWR)と同等ですfopen("filename", "w")

/dev/null - これは、不要なストリームを切り捨てるために使用されます。stdoutターミナルで と の両方を出力するコマンドをターミナルで実行しているとしますstderr。エラーを切り捨てたい場合は、次のようなコマンドを実行できますcmd 2>/dev/null。コンパイル中にコンパイラの警告のみを表示したい場合は、 のように実行できますmake 1> /dev/null

于 2012-08-25T15:17:27.233 に答える