Linuxでの特殊ファイルの概念を理解しようとしています。しかし、/dev私の知る限り、Cのいくつかの行でその機能を実装できる場合、特別なファイルを持っているのはばかげているように見えます。
さらに、ほぼ同じ方法で使用することもできます。つまりnull、にリダイレクトする代わりにパイピングし/dev/nullます。ファイルとして持つ特定の理由はありますか?同じファイルにアクセスするプログラムが多すぎるなど、他の多くの問題をファイルにしないのですか?
grep blablubb file.txt 2>/dev/null && dosomethingnullがプログラムまたは関数であると機能しませんでした。
read関数の本体は/dev/null「return 0」で構成されます(つまり、何も行わず、EOFが発生することを意味します):(静的github.com/torvalds/linux/blob/master/からdrivers / char / mem.c)ssize_t read_null(struct file *file, char __user *buf, size_t count, loff_t *ppos) { return 0; }(ああ、@ JdeBPがすでにその点を指摘しているのを見るだけです。とにかく、ここにイラストがあります:-)。
cat foo | bar大部分も、なぜ(スケールで)がはるかに悪いのかですbar <foo。cat些細なプログラムですが、些細なプログラムでもコストが発生します(FIFOのセマンティクスに固有のものもあります。seek()たとえば、プログラムはFIFO内に配置できないためです。パイプラインが与えられた場合、/dev/nullそれらの操作を偽装できるキャラクターデバイスを使用するか、実際のファイルを使用してそれらを実装できますが、FIFOはコンテキストを意識した処理を一切許可しません)。