免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 665 | 回复: 0
打印 上一主题 下一主题

Linux进程管理(5) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-08 10:01 |只看该作者 |倒序浏览
sys_clone(),sys_fork(),sys_vfork()和sys_thread()都是要调用do_fork()的。

long do_fork(unsigned long clone_flags,//第1参数
             unsigned long stack_start,//第2参数
             struct pt_regs *regs,//第3参数
             unsigned long stack_size,//第4参数
             int __user *parent_tidptr,//第5参数
             int __user *child_tidptr)//第6参数

第1参数:标志位。最后一个字节是进程结束时返回给父进程的信号。
第2参数:新的栈指针。(0:当前栈指针)
第3参数:指向保存有要传给do_fork函数的寄存器值的栈地址
第4参数:栈大小。
第5参数:父进程地址空间。
第6参数:子进程地址空间。

clone_flages是以下值的或组合
CLONE_VM 0x00000100 子进程与父进程共享mm_struct
CLONE_FS 0x00000200 子进程与父进程共享fs_struct
CLONE_FILES 0x00000400 子进程与父进程共享files_struct
CLONE_SIGHAND 0x00000800 子进程与父进程共享signal_struct,sighand_struct
CLONE_PTRACE 0x00002000 父进程如果被ptrace,则子进程也被ptrace
CLONE_VFORK 0x00004000 子进程的mm_struct被mm_relase之前,父进程不动作
CLONE_PARENT 0x00008000 子进程与父进程有同一个父进程
CLONE_THREAD 0x00010000 子进程与父进程同属一个线程组
CLONE_NEWNS 0x00020000 子进程与父进程不共享namespace
CLONE_SYSVSEM 0x00040000 子进程于父进程共享system V semaphore的undo list(sem_undo)
CLONE_SETTLS 0x00080000 根据第3个参数值,为子进程设置TLS
CLONE_PARENT_SETTID 0x00100000 在第5个参数所指定的父进程地址里写入父进程ID
CLONE_CHILD_CLEARTID 0x00200000 子进程结束时,在第6个参数所指定的子进程地址里写入0
CLONE_DETACHED  0x00400000 不用
CLONE_UNTRACED  0x00800000 强制解除父进程的ptrace
CLONE_CHILD_SETTID 0x01000000 子进程动作时,在第6个参数所指定的子进程地址里写入子进程ID
CLONE_STOPPED  0x02000000 子进程生成时处于TASK_STOPPED状态






本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/91477/showart_1855089.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP