[英]Why are linux system calls different across architectures
根据这个系统调用表,linux 系统调用在不同的架构中是不同的,但是 IMO 系统调用是更高级别的封装,不依赖于任何特定的架构。 为什么要这样设计?
在特定情况下, riscv64 linux 没有mkdir
,而是有mkdirat
,但奇怪的是它没有rmdir
或rmdirat
,它怎么能实现/bin/rmdir
没有rmdir
,即使它可以(通过其他系统调用,如read
并write
),为什么不对mkdir
做同样的事情呢? 这两个系统调用不匹配真的很令人困惑。
你从错误的方向看这个。 mkdirat
可以做mkdir
可以做的所有事情,然后一些,所以问题不是为什么 riscv64没有mkdir
,而是为什么x86 有它。 答案是向后用户空间兼容性。 由于 Linux 永远不会破坏这一点,而且mkdir
首先存在,所以它将永远存在。 但是 riscv64 从来没有它,所以没有用户空间程序可以通过没有它来破坏它。
至于rmdir
,替代它的不是rmdirat
,而是与unlinkat
AT_REMOVEDIR
。 然后同样的论点适用于它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.