Devices

何時強制使用 /dev/zero 而不是 /dev/null 用於寫入/丟棄目的?

  • April 16, 2022

根據FHS關於/dev

它包含:

The following devices must exist under /dev.

/dev/null
     All data written to this device is discarded. A read from this device will return an EOF condition.

/dev/zero
     This device is a source of zeroed out data. All data written to this device is discarded. A read from this device will return as many bytes containing the value zero as was requested.
...

觀察兩者都有:

All data written to this device is discarded

/dev/null我閱讀了許多總是用來丟棄數據的教程。但是因為兩者的寫作目的相同(丟棄)

問題

  • 何時強制使用/dev/zero寫入/dev/null/丟棄目的

順便說一句,其他差異 - 實際上主要是關於閱讀- 我們有:

如果您使用的是 Linux,則永遠不會“強制”重定向到/dev/null而不是/dev/zero. 正如您所注意到的,無論哪種方式,您都會得到相同的結果。

也就是說,/dev/null如果要丟棄數據,則應始終重定向到。因為每個人都明白寫入/dev/null意味著丟棄數據;它在表達你的意圖。

另一方面,寫入/dev/zero也會丟掉你的數據,但是這並不是你正在嘗試做的事情。

除此之外,我會擔心是否/dev/zero允許在其他 Unices 上寫入,例如 BSD 等。我認為/dev/zeroPOSIX 甚至不需要,而/dev/nullis . 因此,將/dev/null其用於預期目的是最大的可移植性;做任何其他事情都是犧牲可移植性而沒有任何收穫。

引用自:https://unix.stackexchange.com/questions/699021