我正在學習android內核作爲初學者。我可以通過使用dmesg
命令通過adb讀取從函數main()
中的宏ERROR()
引發的消息system/core/init/init.c
。我觀察到在調用main()
,dmesg
內部的函數open_devnull_stdio()
後,不再顯示ERROR()
引發的消息。在c中的文件名開始之前和結束之後使用雙下劃線(__)的目的是什麼?
爲了找到原因,我開始挖掘到的open_devnull_stdio()
內system/core/init/util.c
聲明,我發現這條線我不明白
static const char *name = "/dev/__null__"
;
其實有沒有名爲__null__
內的設備/dev/
文件,但有一個叫null
文件,我可以用adb pull
抓住它,它是一個0字節(空)文件。
那麼爲什麼用雙下劃線(__)包裹文件名?
這裏是鏈接的util.c
我不知道答案,但你可能想查找/ dev/null。這是一個衆所周知的「文件」。 https://en.wikipedia.org/wiki/Null_device –
null設備是一件非常特別的事情。你能舉出更多的例子嗎? – Yunnosch