c - Nice() 库调用还是系统调用?

标签 c linux unix operating-system system-calls

更改调用进程优先级的函数(例如:nice())应该作为库调用还是系统调用来实现?我在网上阅读有关它的信息,据我了解,它曾经是一个系统调用,但现在是一个库调用。为什么会这样?

最佳答案

所有函数都是库调用。您正在查看的问题是对是否存在直接对应于语义的系统调用的问题的草率简写,以便库函数可以按照return syscall(SYS_foo, ...);的方式做一些琐碎的事情。 .

经常会发生这样的情况:在历史上的某个时刻,有一个系统调用与历史上该时刻的函数操作完全对应,但是:

  • 对函数的新要求导致现有系统调用无法满足函数的需求,或者
  • 在系统调用中发现了一个对其界面至关重要的错误

无论哪种情况,如果有一种合理的方法来完全使用其他系统调用来实现该操作,那么通常比实现系统调用的“v2”更有意义。此外,即使添加了新的系统调用,它通常也会比旧接口(interface)所需的通用性更高,以实现可扩展性或有助于满足其他现有需求。因此,它可能不直接对应于正在实现的功能,只是提供一种获取功能的方法。

关于c - Nice() 库调用还是系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227332/

相关文章:

c - 在 Unix 和 Windows 中运行程序

shell - 将文件读入 String 并在 Expect Script 中执行循环

python - 如何使用 Python 的 cffi 和 enum 数组

存储在 eax 寄存器中的 c 变量

c - fork与动态库交互

c - 为什么这个语句在scanf语句中不需要 '&'符号 'scanf( "%*[\n]%[^\n ]",arr);'

python - 将最佳拟合及其方程放入绘图中

java - 在 Fedora 17 上的用户主目录中安装 Oracle JDK 6u38

linux -/etc/nsswitch.conf 更改后,Docker 容器中的 Oracle Java 无法解析主机名

c++ - 将最后 n 行从一个文件写入另一个文件