gpt4 book ai didi

c - 使用 "syscall"而不是直接调用函数的原因是什么?

转载 作者:行者123 更新时间:2023-11-30 17:02:46 26 4
gpt4 key购买 nike

syscall它允许在 Linux 中进行间接系统调用。使用它的原因是什么 - 为什么它比直接调用函数更好?

最佳答案

有时内核会添加系统调用,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 特定的接口(interface)还要差,因为系统调用数因 CPU 而异。)

关于c - 使用 "syscall"而不是直接调用函数的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36449844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com