有没有一种方法可以找出哪些C标准库函数会进行系统调用?像
open
、close
和malloc
这些函数很明显,但是是否有某种列表可以查看?例如,strcpy
是否会进行系统调用,或者time.h
中的任何函数是否会进行系统调用?open
、close
和malloc
这些函数很明显,但是是否有某种列表可以查看?例如,strcpy
是否会进行系统调用,或者time.h
中的任何函数是否会进行系统调用?open
版本。返回与已经打开的文件描述符匹配的文件描述符远远不符合标准... - R.. GitHub STOP HELPING ICEstrcpy
进行系统调用,则效率非常低,因为这需要中断;您的代码停止运行,发生上下文切换,CPU的执行模式更改(以具有更多特权),中断处理程序将运行,然后您的代码将继续运行。这是假设操作系统不决定在中断之后运行另一个进程或完全停止您的代码(例如在等待读取时)。这篇文章展示了如何在汇编中调用中断(这是唯一能够到达执行此操作的代码位置)。
time
示例。 (如果你知道内核如何将必要的数据映射到用户空间内存,并知道其格式,那么你“可能”可以编写 time
函数,但它会很脆弱,因为内核的细节可能会发生变化。因此,如果想避免系统调用,则需要使用内核提供的代码。) - R.. GitHub STOP HELPING ICE