Files
為什麼 /dev/null 是一個文件?為什麼它的功能不作為一個簡單的程序來實現?
我試圖理解 Linux 上特殊文件的概念。
/dev
但是,據我所知,當它的功能可以通過 C 中的幾行程式碼來實現時,擁有一個特殊文件似乎很愚蠢。此外,您可以以幾乎相同的方式使用它,即通過管道輸入
null
而不是重定向到/dev/null
. 將其作為文件有特定原因嗎?將其設為文件不會導致許多其他問題,例如訪問同一文件的程序過多嗎?
除了使用字元特殊設備的性能優勢外,主要優勢是模組化。/dev/null 幾乎可以在任何需要文件的上下文中使用,而不僅僅是在 shell 管道中。考慮接受文件作為命令行參數的程序。
# 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
這些都是使用程序作為源或接收器非常麻煩的情況。即使在 shell 管道的情況下,stdout 和 stderr 也可以獨立地重定向到文件,這對於作為接收器的執行檔來說是很難做到的:
# Suppress errors, but print output. $ grep foo * 2>/dev/null