Linux上の特殊ファイルの概念を理解しようとしています。ただし、/dev
に特別なファイルがある 私の知る限り、Cの数行でその関数を実装できるとしたら、ばかげているように思えます。
さらに、ほぼ同じ方法で使用できます。つまり、null
にパイプします。 /dev/null
にリダイレクトする代わりに 。それをファイルとして持つ特別な理由はありますか?ファイルにすると、同じファイルにアクセスするプログラムが多すぎるなど、他の多くの問題が発生しませんか?
承認された回答:
キャラクター専用デバイスを使用することによるパフォーマンス上の利点に加えて、主な利点はモジュール性です。 。 / dev / nullは、シェルパイプラインだけでなく、ファイルが予期されるほとんどすべてのコンテキストで使用できます。コマンドラインパラメータとしてファイルを受け入れるプログラムを検討してください。
# We don't care about log output.
$ frobify --log-file=/dev/null
# We are not interested in the compiled binary, just seeing if there are errors.
$ gcc foo.c -o /dev/null || echo "foo.c does not compile!".
# Easy way to force an empty list of exceptions.
$ start_firewall --exception_list=/dev/null
これらはすべて、プログラムをソースまたはシンクとして使用するのが非常に面倒な場合です。シェルパイプラインの場合でも、stdoutとstderrは個別にファイルにリダイレクトされる可能性があります。これは、実行可能ファイルをシンクとして使用するのは困難です。
# Suppress errors, but print output.
$ grep foo * 2>/dev/null