gpt4 book ai didi

linux - fork() 和 sys_fork() 的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:47 26 4
gpt4 key购买 nike

我看到所有系统调用(比如 x)都与另一个调用 sys_x() 相关:例如:fork 和 sys_fork()、open() 和 sys_open() 等。

这些 sys_x() 调用的意义是什么?我们可以在哪里使用这些调用?

最佳答案

What is significance of these sys_x() calls?

顾名思义,这些是在内核模式下执行的实际系统调用。

你看,当你从你的应用程序调用 fork(2)open(2) 时,你并没有直接调用原始系统调用;相反,您正在调用知道如何调用实际系统调用的 glibc 包装器。这个间接步骤是必需的,因为系统调用调用是特定于体系结构的,所以细节隐藏在 glibc 中。

Where we can use these calls?

你不知道。其一,sys_fork() 是特定于 Linux 的;其他 UNIX 变体不需要(并且可能不需要)实现 sys_fork() 函数。内核中处理 fork 的确切函数是系统相关的。恰好Linux有一个函数叫做sys_fork()sys_open()等。

例如,在 fork(2) 的情况下,Linux 中的流程大致如下:

fork() -> glibc 包装器 -> 原始系统调用调用 -> 转换到内核模式 -> 系统调用查找 -> sys_fork() -> do_fork ()

关于linux - fork() 和 sys_fork() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31873923/

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