Linux进程创建及同步实验

阅读: 评论:0

Linux进程创建及同步实验

Linux进程创建及同步实验

本文参考自: 原文地址

为自己这一段时间学的操作系统中关于Linux部分做一个系统性的练习,记录下自己的心得体会。

首先,这是所做的四个题目。

①编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程输出不同的内容。试观察记录屏幕上的显示结果,并分析原因。

②修改上述程序,每一个进程循环显示一句话。子进程显示'daughter  …'及'son  ……',父进程显示 'parent  ……',观察结果,分析原因。

③再调用exec( )用新的程序替换该子进程的内容 ,并利用wait( )来控制进程执行顺序。调用Exit()使子进程结束。

④利用linux的信号量机制实现生产者-消费者问题。(基于进程)

下面总结一下自己每一步的具体操作,给自己留个纪念,也算是抛砖引玉,给大家传授一点儿经验啦!

第一、二两题目:首先,创建.c文件,具体的方式,在我的第一篇博客—--Linux添加系统调用里面讲到过,也可以直接参考这一篇博客,。编辑自己的.c文件,开始写实现代码。

//第一个题目:fork( )创建两个子进程两个子进程,运行观察输出结果 #include <stdio.h> #include<unistd.h> int main( ) { int p1,p2; while((p1=fork( ))==-1); //创建子进程 p1 if (p1==0) printf("daughtern"); else { while((p2=fork( ))==-1); //创建子进程 p2 if(p2==0) printf("sonn"); else printf("parentn"); } } //修改后,第二题每一个进程循环显示一句话 #include<stdio.h> #include<unistd.h> int main( ) { int p1,p2,i; while((p1=fork( ))== -1); /*创建子进程 p1*/ if (p1==0) for(i=0;i<10;i++) printf("daughter %dn",i); else { while((p2=fork( ))== -1); /*创建子进程 p2*/ if(p2==0) for(i=0;i<10;i++) printf("son %dn",i); else for(i=0;i<10;i++) printf("parent %dn",i); } }

这里注意,第一次创建编译过.c文件之后,下一次修改就可以直接打开你的.c文件,注释掉之前的代码,重新编辑保存即可。如图:



写完一段代码,在终端使用命令gcc fork.c -o fork(说明:此处为你自己命的文件名) 在shell中编译该程序,编译结束后,继续输入./fork就可以运行自己刚才所写的程序了。

第一道题目多次运行结果如下:

原因分析:本来从进程并发执行来看,各种情况都有可能。上面的三个进程没有同步措施,父进程与子进程的输出内容会叠加在一起。输出次序带有随机性。


第二道题目多次运行结果:

本文发布于:2024-02-05 07:08:49,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170727033164285.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:进程   Linux
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23