根據這個系統呼叫表,linux 系統呼叫在不同的架構中是不同的,但是 IMO 系統呼叫是更高級別的封裝,不依賴于任何特定的架構。為什么要這樣設計?
在特定情況下, riscv64 linux 沒有mkdir,而是有mkdirat,但奇怪的是它沒有rmdiror ,即使它可以(通過其他系統呼叫,如and ),它rmdirat怎么能實作/bin/rmdir呢?為什么不做同樣的事情呢?這兩個系統呼叫不匹配真的很令人困惑。rmdirreadwritemkdir
uj5u.com熱心網友回復:
你從錯誤的方向看這個。mkdirat可以做所有可以做的事情mkdir,然后一些,所以問題不是為什么 riscv64沒有mkdir,而是為什么 x86確實有它。答案是向后用戶空間兼容性。由于 Linux 從未打破這一點,并且mkdir首先存在,因此它將永遠存在。但是 riscv64 從來沒有它,所以沒有用戶空間程式可以通過沒有它來破壞它。
至于rmdir, 的替代品不是,rmdirat而是unlinkat. AT_REMOVEDIR然后同樣的論點適用于它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480495.html
