【发布时间】:2014-05-08 01:40:13
【问题描述】:
系统调用是内核面向用户空间的接口。用户进程通常不会直接调用它们,而是使用 libc 来执行此操作。 libc 要么只是为系统调用提供一个瘦包装器,要么像fork() 和exec() 那样做更多的工作
所以我的问题是 - 内核的系统调用接口是否会以非向后兼容的方式在内核版本之间发生变化?还是系统调用一旦建立就永远不会改变?
【问题讨论】:
-
请允许我引用
open(2)手册页:“符合”。 -
你到底为什么要问???
-
@BasileStarynkevitch 我想用像 musl 这样的静态 libc 编译我的应用程序,并确保它永远不会中断 :)
-
“从不”在 IT 中没有任何意义。但是您的应用程序可能在十几年(或稍短一些)内都不会崩溃。如果这还不够,那就让它成为免费软件(希望有人能在 2030 年或 2040 年将源代码调整为相关标准)!
-
对于这个问题的任何回答,在 Linux 的上下文中,都必须包含内核开发人员的座右铭:“永不破坏用户空间”。这是一个重要的政策,Linus 曾多次谴责甚至是内核维护者。更多详情,请阅读this post。
标签: linux kernel system-calls