|
1
3
里面什么都没有
the
这个共享的地址空间允许以后使用轻量级IPC,但进程本身并不是更精简的。 |
|
2
4
实际上,在概念层面上,Linux内核对进程或线程一无所知,只知道“任务”。 Linux任务可以是进程、线程或介于两者之间的东西。(顺便说一下,这意味着vfork()创建的奇怪子代完全适合Linux“任务”范式)。
或者新任务可以选择拥有各自资源的副本。从2.6.16开始,它们可以在启动后执行,请参见取消共享(2)。 例如,vfork()和fork()调用之间的唯一区别是vfork()具有CLONE-VM和CLONE-vfork集。CulONYVM使其共享其父内存(与线程共享内存的方式相同),而C克隆OnFoFor则在父进程释放内存映射(通过调用ExvEvE()或μExt())时生成父块。 注意,Linux并不是唯一一个以这种方式泛化进程和线程的操作系统。计划9具有rfork()。 |
|
|
3
1
我知道这三个clone、fork和vfork之间的区别在于标志,因为最后这三个都调用内核中的do_fork() fork()-->C_lib-->sys_fork()-->do_fork() vfork()-->C_lib-->sys_vfork()-->do_fork() clone()-->C_lib-->sys_clone()-->do_fork() 现在让我们看看克隆标志 克隆的主要用途是实现线程,在线程中内存空间共享,然后堆栈。除了与fork和vfork相同的参数外,clone还将函数指针作为参数,在创建子进程时立即调用该参数。 |
|
|
James G · 分叉过程每次打印的方式不同 8 年前 |
|
|
Filip Spasovski · fork()从何处开始[重复] 8 年前 |
|
|
Alopex · 如何从子进程到父进程获取返回值? 8 年前 |
|
|
TheAndreyx22 · 查看execvp(); 8 年前 |
|
|
Jacob H · 如何写入正在运行的程序的stdin 8 年前 |
|
|
Pedro · execlp()无法检索正确的输入 8 年前 |
|
|
Giorgi Cercvadze · 如何将暂停的进程设置为后台? 8 年前 |
|
|
S. N · 使用C创建子进程和父进程 8 年前 |
|
|
funcs · 无限循环中来自子级的read()标准输出 8 年前 |