【发布时间】:2012-08-30 10:34:10
【问题描述】:
syscall 允许在 Linux 中进行间接系统调用。使用它的原因是什么 - 为什么它比直接调用函数更好?
【问题讨论】:
标签: c linux operating-system
syscall 允许在 Linux 中进行间接系统调用。使用它的原因是什么 - 为什么它比直接调用函数更好?
【问题讨论】:
标签: c linux operating-system
有时内核会添加系统调用,C 库需要一段时间才能支持它们。
或者您正在旧的 Linux 发行版上编译,但想在较新的发行版上运行。
示例代码:
// syscall 277 is sync_file_range() on x86_64 Linux. The header
// files lack it on scc-suse10 where we compile, but the
// performance benefits are substantial, so we just call it
// directly. FIXME someday.
#define SYNC_FILE_RANGE_WRITE 2
syscall(277, fd, done, n, SYNC_FILE_RANGE_WRITE);
但总的来说,如果你的编译环境中的 C 库有你需要的东西,那么使用 syscall 并没有什么好处。 (一方面,它的可移植性甚至不如使用 Linux 特定接口,因为系统调用号因 CPU 而异。)
【讨论】: