clone()是在C语言库中定义的一个封装函数,它负责建立心轻量级进程的堆栈并且对编程者隐藏的clone()系统调用。实现clone()系统调用
的sys_clone()服务例程没有fn和arg参数。实际上,封装函数把fn指针存放在子进程堆栈的某个位置处,该位置就是该封装函数本身返回地址存
放的位置。arg指针正好存放在子进程堆栈中fn的下面。当封装函数结束时,CPU从堆栈中取出返回地址,然后执行fn(arg)函数。
构造了一个调用关系,fn是封装函数的父函数的一部分。
堆栈情况如下:
0xC0000000 --------
arg
fn地址
0x00000000 --------
阅读(6622) | 评论(0) | 转发(0) |