更改调用进程优先级的函数(例如:nice())应该作为库调用还是系统调用来实现?我在网上阅读有关它的信息,据我了解,它曾经是一个系统调用,但现在是一个库调用。为什么会这样?
最佳答案
所有函数都是库调用。您正在查看的问题是对是否存在直接对应于语义的系统调用的问题的草率简写,以便库函数可以按照return syscall(SYS_foo, ...);
的方式做一些琐碎的事情。 .
经常会发生这样的情况:在历史上的某个时刻,有一个系统调用与历史上该时刻的函数操作完全对应,但是:
- 对函数的新要求导致现有系统调用无法满足函数的需求,或者
- 在系统调用中发现了一个对其界面至关重要的错误
无论哪种情况,如果有一种合理的方法来完全使用其他系统调用来实现该操作,那么通常比实现系统调用的“v2”更有意义。此外,即使添加了新的系统调用,它通常也会比旧接口(interface)所需的通用性更高,以实现可扩展性或有助于满足其他现有需求。因此,它可能不直接对应于正在实现的功能,只是提供一种获取功能的方法。
关于c - Nice() 库调用还是系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227332/