実際のところ
例のお手本プログラムから抜粋。
// Write data to file write(fd_out, (const void*)in_array, nBytes); // Write data to stdout as well write(STDOUT_FILENO, (const void*)in_array, nBytes);
ここで、write関数の引数はこんな順番なので……
STDOUT_FILENOはファイルディスクリプターとかと同じ所におくみたい。
write(int fd, const void *buf, size_t count);
実際、参考もとサイトの解説では
STDOUT_FILENO == fileno(stdout)
ということで、
関数 fileno() は、引数 stream を調べ、その整数のディスクリプターを返す。
とあるから標準出力のディスクリプターを指定しているのは間違いない様子。
ファイルなら、ファイルのディスクリプターを渡すけれども、
今回は標準出力が欲しいので、こうする、と。
これがSTDIN_FILENOならread関数に対しておんなじ様な処理になるわけですね。