张磊+ + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
实验楼编译运行 gdb 调试程序:
1.rm menu -rf
2.git clone https://github.com/mengning/menu.git
3.cd menu
4.mv test_fork.c test.c
5.make rootfs
test.c 代码如下:
进入 gbd 调试状态代码:
qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S
gdb
file ../linux-3.18.6/vmlinux
target remote:1234
设置断点:
继续调试直到fork 系统调用结束。
小结:
1.fork 通过复制父进程,通过调用 do_fork 实现。
2.为新建进程分配task_struct结构。
3.fork 函数被调用一次,返回两次。