Linux C编程--fork 详解

               

在Linux系统下学习一个系统函数最好的方法就是阅读其源码,首先,给出fork函数的源码

/**  linux/kernel/fork.c*                                //--fork()用于创建子进程*  (C) 1991  Linus Torvalds*//**  'fork.c' contains the help-routines for the 'fork' system call* (see also system_call.s), and some misc functions ('verify_area').* Fork is rather simple, once you get the hang of it, but the memory* management can be a bitch. See 'mm/mm.c': 'copy_page_tables()'*/#include <errno.h>#include <linux/sched.h>#include <linux/kernel.h>#include <asm/segment.h>#include <asm/system.h>                                //--写页面验证,若页面不可写,则复制页面extern void write_verify(unsigned long address);long last_pid=0;                                //--进程空间区域写前验证函数void verify_area(void * addr,int size){    unsigned long start;    start = (unsigned long) addr;    size += start & 0xfff;    start &= 0xfffff000;    start += get_base(current->ldt[2]);        //--逻辑地址到线性地址的转换    while (size>0) {        size -= 4096;        write_verify(start);        start += 4096;    }}int 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值