实验一进程创建 Linux实验报告.doc
- baoyue个人认证 |
- 2020-03-14 发布|
- 117.4 KB|
- 5页
实验一 进程创建
【实验目的和要求】
1、1.了解进程的概念及意义;
2.了解子进程和父进程;
3.掌握创建进程的方法。
【实验内容】 1、1.子进程和父进程的创建;
? ?2.编写附件中的程序实例;
? ?3.撰写实验报告。
【实验原理】
1、原型: #include <unistd.h> pid_t fork(void); 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。fork函数创建子进程的过程为:使用fork函数得到的子进程是父进程的一个复制品,它从父进程继承了进程的地址空间,包括进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端,而子进程所独有的只有它的进程号、资源使用和计时器等。通过这种复制方式创建出子进程后,原有进程和子进程都从函数fork返回,各自继续往下运行,但是原进程的fork返回值与子进程的fork返回值不同,在原进程中,fork返回子进程的pid,而在子进程中,fork返回0,如果fork返回负值,表示创建子进程失败。
子进程和父进程继续执行fork调用之后的指令。子进程是父进程的副本。例如,子进程获得父进程数据空间、堆和栈的副本。注意,这是子进程所有用的副本。父进程和子进程并不共享这些存储空间部分。父进程和子进程共享正文段。
2、原型: #include <unistd.h> pid_t vfork(void);
vfork函数的调用序列和返回值与fork相同,但两者的语义不同。vfork函数用于创建一个新进程,而该进程的目的是exec一个新程序。vfork不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec,它在父进程的空间中运行。vfork保证子进程先运行,在它调用e