当前位置: 技术问答>linux和unix
创建进程的系统调用clone()和fork()
来源: 互联网 发布时间:2017-02-26
本文导语: fork()依据返回值的不同来区分是父进程返回还是子进程返回 clone()依据返回时的堆栈指针来区分是父进程返回还是子进程返回 为什么“依据返回时的堆栈指针来区分”的方法内对内核线程才适用? 为什么clone()可以使...
fork()依据返回值的不同来区分是父进程返回还是子进程返回
clone()依据返回时的堆栈指针来区分是父进程返回还是子进程返回
为什么“依据返回时的堆栈指针来区分”的方法内对内核线程才适用?
为什么clone()可以使用这种方法?clone()创建的一定是内核线程吗?
clone()依据返回时的堆栈指针来区分是父进程返回还是子进程返回
为什么“依据返回时的堆栈指针来区分”的方法内对内核线程才适用?
为什么clone()可以使用这种方法?clone()创建的一定是内核线程吗?
|
系统调用clone 确实能创建用户线程
但是原作者针对那句话的例子是thread_create ,这个只能创建内核线程
但是原作者针对那句话的例子是thread_create ,这个只能创建内核线程
|
clone用于创建轻量级进程,即创建的子进程与父进程共用线性地址空间,只是他们的堆栈不同而已(进程ID应该也不同),linux 2.4用户线程就是基于此实现的。
fork创建的子进程与父进程使用的不同的线性地址空间,是完全的进程概念。
fork创建的子进程与父进程使用的不同的线性地址空间,是完全的进程概念。