2011年11月6日
摘要: 该系统调用所需要的参数pt_regs在include/asm-i386/ptrace.h文件中定义:struct pt_regs {long ebx; //可执行文件路径的指针(regs.ebx中long ecx; //命令行参数的指针(regs.ecx中)long edx; //环境变量的指针(regs.edx中)。long esi;long edi;long ebp;long eax;int xds;int xes;long orig_eax;long eip;int xcs;long eflags;long esp;int xss;};该 参数描述了在执行该系统调用时,用户态下的CPU寄 阅读全文
posted @ 2011-11-06 19:29 wanghetao 阅读(11772) 评论(0) 推荐(0) 编辑
摘要: 说是exec系统调用 ,实际上在Linux中,并不存在一个exec()的函数形式,exec指的是一组函数,一共有6个,分别是:#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const char *arg, ..., char *const envp[]);int execv(const ch 阅读全文
posted @ 2011-11-06 11:00 wanghetao 阅读(2097) 评论(0) 推荐(0) 编辑
摘要: int clone(int (*fn)(void *), void *child_stack, int flags, void *arg);这里fn是函数指针,我们知道进程的4要素,这个就是指向程序的指针,就是所谓的“剧本", child_stack明显是为子进程分配系统堆栈空间(在linux下系统堆栈空间是2页面,就是8K的内存,其中在这块内存中,低地址上放入了值,这个值就是进程控制块task_struct的值),flags就是标志用来描述你需要从父进程继承那些资源, arg就是传给子进程的参数)。下面是flags可以取的值标志含义CLONE_PARENT创建的子进程的父进程是调用 阅读全文
posted @ 2011-11-06 10:48 wanghetao 阅读(19995) 评论(0) 推荐(0) 编辑