


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一进程创建【实验目的和要求】1、1.了解进程的槪念及意义:2. 了解子进程和父进程:3. 掌握创建进程的方法。【实验内容】1、1.子进程和父进程的创建:2. 编写附件中的程序实例:3. 撰写实验报告。【实验原理】1、原型:include <unistd. h>pid_t fork(void);在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程 为子进程,而原进程为父进程。fork函数创建子进程的过程为:使用fork函数得到的子进 程是父进程的一个复制品,它从父进程继承了进程的地址空间,包括进程上下文、进程堆栈、 内存信息、打开的文件描述符、信号控
2、制设龙、进程优先级、进程组号、当前工作目录、根 目录、资源限制、控制终端,而子进程所独有的只有它的进程号、资源使用和汁时器等。通 过这种复制方式创建出子进程后,原有进程和子进程都从函数fork返回,各自继续往下运 行,但是原进程的fork返回值与子进程的fork返回值不同,在原进程中,fork返回子进 程的pid,而在子进程中,fork返回0,如果fork返回负值,表示创建子进程失败。子进程和父进程继续执行fork调用之后的指令。子进程是父进程的副本。例如,子进 程获得父进程数据空间、堆和栈的副本。注意,这是子进程所有用的副本。父进程和子进程 并不共享这些存储空间部分。父进程和子进程共享正文段
3、。2、原型:include <unistd. h>pid_t vfork(void);vfork函数的调用序列和返回值与fork相同,但两者的语义不同。vfork函数用于创建 一个新进程,而该进程的目的是exec -个新程序。vfork不将父进程的地址空间完全复制 到子进程中,因为子进程会立即调用exec,它在父进程的空间中运行。vfork保证子进程先 运行,在它调用exit之后父进程才可能被调度运行,当子进程调用这两个函数中的任意一 个时,父进程会恢复运行。【程序代码】1、l_fork.c#include <stdio. h>#include <stdlibh&
4、gt;#include <unistdh>int var = 10;int main(int argc,char *argv)pid_t pid;int num = 9;pid = fork();if(pid<0)/fork函数创建进程失败!perror (z,fork,z);if(pid=0)/ 子进程var+;num+;printf (,zin son process var = %d, num=%dn,z, var, num):else/父进程sleep(l);printf ("in father process var=od, nuni=%dn",
5、 var, num);printf (''common code arean,z):return 0;2、2_vfork. c#include <stdio. h>#include <stdlibh>#include <unistdh>int var = 10;int main(int argc, char *argv)pid_t pid;int num = 9;pid = vfork() ;/创建进程if(pid<0)perror (,zvfork,z);辻(pid = 0)var+;num+;printf ("in son
6、 process var=od, num=%dn", var, num); _exit(0);elseprintf ("in father process var=od, num=odn,z, var, num);return 0;【实验步骤】1、打开终端,输入命令gedit l_fork. c,在l_fork. c文件中输入l_fork bmp 中的代码;2、输入命令gcc l_fork. c -o l_fork,回车后显示无错误;3、输入命令:./l.fork运行程序。1 打开终端,输入命令gedit 2_vfork. c,在2_vfork. c文件中输入2_vfork
7、. bmp中的代码;2、输入命令gcc 2_vfork. c -o 2_vfork»回车后显示无错误:3、输入命令:./2_vfork运行程序。【实验结果】1、 f unsp(munsp-vlrtual-machlne: 文件(F)5S(E) S(V)搜索(S)终錦(T)帮助(H)unsp(3unspviftual-machine:-$ gedit I fork c unspunspvictuamachine:-$ gcc l_forkc -o l_fork unsp(aunsp v i ft ua I-machine :$ / I fork in son process var=l
8、lfnum=10 common code areain father process var=10r num=9 conmon code areaunspunsp virtualmachine:-$从上面可以看到两次的运行结果不一样。我们知道write函数是不带缓存的。因为在 fork之前调用write,所以苴数据写到标准输出一次。但是,标准I/O库是带缓存的。如 果标准输出连到终端设备,则它是行缓存的,否则它是全缓存的。当以交互方式运行该程序 时,只得到printf输岀的行一次,其原因是标准输岀缓存由新行符刷新。但是当将标准输 出重新左向到一个文件时,却得到printf输岀行两次。其原因是,
9、在fork之前调用了 printf 一次,当调用fork时,该行数据仍在缓存中,然后在父进程数据空间复制到子进程中时, 该缓存数据也被复制到子进程中。于是那时父、子进程各自有了带该行内容的缓存。在亡xit 之前的第二个printf将其数据添加到现存的缓存中。当每个进程终止时,其缓存中的内容 被写到相应文件中。2、unspunsp-virtual-machine:-文件(F)编辑(E)查看(V)度索(S)终端仃)嵇助(H) unspunspvirtuaachine:$ gedit 2_vforkc unsp(aunspvirtual-machine:$ gcc 2_vfork.c o 2_vfo
10、rk unspunspvirtual-machine:$ /2 vfork in son process var=nFnum=i0 in father process var=ll,num=10 unspunspvirtual-machine:$ |因为我们知道vfork保证子进程先运行,子进程运行结朿后,父进程才开始运行。所以, 第一次打印的是子进程的打印的信息,可以看到var值变成了 11。子进程结束后,父进程 运行,父进程首先打印fork调用返回给他pid的值(就是子进程pid)。以上我们可以看出, vfork创建的子进程和父进程运行的地址空间相同(子进程改变了 var值,父进程中的var 值也进行了改变).【实验体会】1、由fork创建的新进程被称为子进程(child process) o该函数被调用一次, 但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子 进程的进程ID。2、将子进程ID返回给父进程的理由是:因为一个进程的子进程可以多于一 个,所有没有一个函数使一个进程可以获得英所有子进程的进程ID. fork使子进程 得到返回值0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用 getppi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医疗AI研究员影像分割考核题(含答案与解析)
- 2025年AI产品经理用户教育方案面试题(含答案与解析)
- 粮油保管员专业技能考核试卷及答案
- 木材水运工特殊工艺考核试卷及答案
- 焙烧压煮工质量追溯知识考核试卷及答案
- 出河机司机异常处理考核试卷及答案
- 风险管理师职业技能考核试卷及答案
- 钒铁熔化还原工技能巩固考核试卷及答案
- 穿经工招聘考核试卷及答案
- 光纤检测员职业技能考核试卷及答案
- (完整word版)HND商务文化与策略
- 【ch06】基因工程中的伦理问题
- 大学生创新创业(微课版第3版)课件 第1、2章 了解创业规划你的职业生涯、创新与创新思维
- 2022中国移动通信集团重庆限公司招聘上岸笔试历年难、易错点考题附带参考答案与详解
- 卡培他滨诱导手足综合征大鼠模型的建立及评价
- 电动托盘车(搬运车)培训-课件
- 消防管道设备防腐保温施工方案
- 外研版九年级上英语单词默写表
- 14K118 空调通风管道的加固
- 十二岁的旅程
- 汽车发动机构造与维修PPT完整全套教学课件
评论
0/150
提交评论