摘要: Fork的系统调用代码在linux/arch/i386/kernel/process.c中:asmlinkage int sys_fork(struct pt_regs regs){return do_fork(SIGCHLD, regs.esp, ®s, 0, NULL, NULL);}Sys_fork系统调用通过 do_fork()函数实现,通过对do_fork()函数传递不同的clone_flags来实现fork,clone,vfork。Syn_clone和syn_vfork的系统调用代码如下:asmlinkage int sys_clone(struct pt_regs regs 阅读全文
posted @ 2010-12-31 01:10 jerryking 阅读(1796) 评论(0) 推荐(1) 编辑
摘要: linux通过clone()函数实现fork,这个调用通过一些列的参数标志来指明父子进程需要的共享资源。fork,vfork和_clone库函数都根据个字需要的参数标志去调用clone。然后由clone调用do_fork().  do_fork完成了创建中的大部分工作,它的定义在kernel/fork.c中。该函数调用copy_process函数,然后让进程开始运行。  copy_process完成的工作:  @调用dup_task_struct()为新进程创建一个内核栈、thread_info结构和task_struct,这些值与当前进程的值相同。此时,子进程与父进程的描述符是玩去昂相同的。 阅读全文
posted @ 2010-12-31 01:07 jerryking 阅读(754) 评论(0) 推荐(0) 编辑