分析Linux内核创建一个新进程的过程
来源:互联网 发布:现在最流行的网络词语 编辑:程序博客网 时间:2024/05/16 09:21
调用fork函数创建一个进程
在test.c文件中添加函数块如下:
int Fork(){ pid_t pid; pid=fork(); if(pid<0) { fprintf(stderr,"Fork Failed"); return -1; } else if(pid==0) { printf("This is Child Process,pid=%d\n",pid); return pid; } else { printf("This is parent process,pid=%d\n",pid); wait(NULL); printf("Child complete!\n"); return pid; }}
并添加头文件#include <unistd.h>
将工作空间不必要的文件清理后,执行“make”命令
编译成功之后,执行“./test”命令
然后输入“Fork”命令,得如下结果,
输出信息表示的是父子进程的创建信息。
在gdb中跟踪调试情况如下:
首先执行命令:
“qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S”启动调试窗口。
然后重新打开一个终端,分别顺序执行如下三条指令:
在do_fork,copy_process,copy_thread三处设置断点,其执行顺序如下:
可以看出fork函数在这三个地方均以系统调用的方式访问内核。也可见其访问内核的顺序。
当然fork函数访问的系统调用远不止这三处,试验还在sys_clone和dup_task_struct处设置过断点,也追踪到了系统运行的流程。总体上说,这是一个复杂的过程。单凭单步调试和设置断点的方式,很难将其一一追踪到。此处也是管中窥豹,大体上了解fork系统调用的方式。
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
0 0
- 分析Linux内核创建一个新进程的过程(Linux)
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 6.分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 分析Linux内核创建一个新进程的过程
- 6、分析Linux内核创建一个新进程的过程
- Openwrt的wifi脚本分析
- 四大组件之Activity(二)
- IT学术交流盛会,你不容错过!
- TextKit实现图文混排
- 第六届-蓝桥杯省赛-生命之树
- 分析Linux内核创建一个新进程的过程
- intellij idea 基础配置指导
- Add Two Numbers
- .NET在后置代码中输入JS提示语句(背景不会变白)
- 单链表逆置的实现
- 模式之--抽象工厂(Abstract Factory)未完
- 转载 http://drops.wooyun.org/tips/5462?utm_source=tuicool 看来基本算法还是有地方可用
- CoreText实现图文混排
- 不允许创建临时变量,交换两个数的内容(用异或实现)