- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我看到所有系统调用(比如 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/
我需要打印一条消息,通知用户进程已从内核调用 sys_fork 中派生出来。我在 sys_fork() 函数中添加了命令 printf("process forked\n"); 但什么也没发生。这是正
我正在研究内核级系统调用 sys_fork() 的实现。我根据要求将父进程复制到子进程。问题是如何将 child 的 trapframe(父 trapframe 的副本)复制到 child 的内核堆栈
我看到所有系统调用(比如 x)都与另一个调用 sys_x() 相关:例如:fork 和 sys_fork()、open() 和 sys_open() 等。 这些 sys_x() 调用的意义是什么?我们
在eglibc的nptl/sysdeps/unix/sysv/linux/i386/fork.c中有一个定义: #define ARCH_FORK() \ INLINE_SYSCALL (clon
我是一名优秀的程序员,十分优秀!