繁体   English   中英

为什么Linux系统调用跨架构不同

[英]Why are linux system calls different across architectures

根据这个系统调用表,linux 系统调用在不同的架构中是不同的,但是 IMO 系统调用是更高级别的封装,不依赖于任何特定的架构。 为什么要这样设计?

在特定情况下, riscv64 linux 没有mkdir ,而是有mkdirat ,但奇怪的是它没有rmdirrmdirat ,它怎么能实现/bin/rmdir没有rmdir ,即使它可以(通过其他系统调用,如readwrite ),为什么不对mkdir做同样的事情呢? 这两个系统调用不匹配真的很令人困惑。

你从错误的方向看这个。 mkdirat可以做mkdir可以做的所有事情,然后一些,所以问题不是为什么 riscv64没有mkdir ,而是为什么x86 有它。 答案是向后用户空间兼容性。 由于 Linux 永远不会破坏这一点,而且mkdir首先存在,所以它将永远存在。 但是 riscv64 从来没有它,所以没有用户空间程序可以通过没有它来破坏它。

至于rmdir ,替代它的不是rmdirat ,而是与unlinkat AT_REMOVEDIR 然后同样的论点适用于它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM