创建三个并发进程linux,实验三Linux进程并发程序设计

《实验三Linux进程并发程序设计》由会员分享,可在线阅读,更多相关《实验三Linux进程并发程序设计(6页珍藏版)》请在人人文库网上搜索。

1、湖北工业大学工程技术学院实验报告课程名称:操作系统实验内容:实验三Linux进程并发程序设计学院: 工程技 术学院专业班级11gb软件2班日期:2013.11.7教师:贺红艳 成绩:、实验目的1、掌握Linux环境下的进程并发程序的控制。2、掌握gcc编译过程二、预习内容1、gcc编译器GNU C编译器(GCC)gcc op tio ns file names不用任何选项编译一个程序时,GCC将会建立(假定编译成功)一个名为a.out的可执行文件.例如,gcc test.c将在当前目录下产生一个叫a.out的文件:用-o编译选项来为将产生的可执行文件指定一个文件名来代替a.out:gcc -o。

2、 count coun t.c注意:当你使用-o选项时,-o后面必须跟一个文件名.2. Linux进程创建相关的系统调用在Linux系统中进程可以由系统调用fork创建,除了 0号进程和1号进程以外,几乎所有的进程都是被另一个进程通过执行fork系统创建。调用fork系统调用的进程就是父进程,由fork创建的进程就是子进程。因此,一个进程可以有多个子进程,但只有一个父进程。(1)fork()创建一个新的子进程。其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码、组代码、环境变量、已打开的文件代码、工作目录和资源限制。系统调用格式:int fork()如果fork成功则在父进程会返回新。

3、建立的子进程代码(PID),而在新建立的子进程中则返回0。如果fork失败则直接返回-1。(2)get pi d()取得目前进程的识别码(进程ID),系统调用格式:in t get pid()例如:#includemain()This is a child process.” );/* 在子进程中 */* 在父进程中 */ int p1; while(p1=fork()= -1); if(p1=0) printf( else”);printf( “ This is a parent process.、实验步骤1、简单 C 程序的运行。1) 在编辑器中新建文件 test.c2) 输入以下程序: 。

4、/* #include main ()printf( “ hello world ”n”);printf( “ Wellcome! ”n”);编译 :gcc test test.c修改 test 文件的访问权限,使其可以被执行。 chmod a+x /test 运行 ./test3)4)4)ruoiloca IlioL ru口Dca IhciHfc口Ih口頁 thf I lr)vinr J(l W I com !rexj t# vim les Kc rt)o t ff root 1# J lestgcc lest .c -o test使其完成:父进程创建两个子进程, 每个进程都在屏幕在显示自己。

5、的进2、编写一段程序,程ID号以及其父进程的ID号。 写出实验步骤与结果:includeid .h# include j11( ch LIdpe J scpr in t f( * ch I Jd tw p id :%tl .pp id=%dn* 黒电 t p idQ ).耳亡 Lpp id(): :1 0pr int f( *pareiu p M;営+ pp輕 TpitU ) .ge lpp jd( :L roo tfcLioca Ihos I roo t J j! ./ tei I ch I Idone p id ; 273S . pp i #in clude main ()/int pi 。

6、d=fork();/if(p id=0)slee p(3);prin tf(Child: pid=%d, pp id=%dn, get pi d(), get pp id(); elseprin tf(” Parent: Child=%d, pid=%d, pp id=%dn, pid, get pid(), get ppi d(); wait(O); / prin tf(After Child en ds.n); /prin tf(I n which p rocess?n);/写出程序,并分析执行结果,并回答In which p rocess?问题。Parent: di i ld=2 775。

7、 . p id; 2774 .pp i d269)Child: pid:277S.ppid=2774In Uiich 卩I ovess?After Gi i Id fndsIn vhich process?子进程先sleep3秒,父进程先打印,然后等待子进程结束。第一个In which process?在子进程中第二个In which process?在父进程中4、把第3题中位置处分别移至位置和处,分析执行结果,并回答 问题。In which pChip id:279 ,ppi盤耳侧Qiild; pid:2792.ppid=2791Af le Ch i Id endIn which p roc。

8、ess?只在父进程中执行In 啊lich process?i hich procf s s?Parent: OiiId-2B09,p id:2ftU&.ppid2G90Child: pid:2809.pp id=2K0KAfler Chi Id endiIn which p rocess?在父字进程中都会先执行5、程序修改:将第 3题中程序中去掉,写出程序结果,并分析原因。In which pro cess?Pa eii 11 Ch I ld=2Hlt + p icLZ却 1筑 ppIn vhich pss?r rooiPluca Ihos I roi)I Oii Id: p id:駅1 氣卩卩 iflT In which precess?子进程在父进程结束后依然存在,子进程变成孤儿进程,有1号进程接管。三、总结利用fork创建子进程,当返回值等于0的时候处于子进程中,大于0时为子进程的进程号,为父进程。子进程会复制fork函数以下的所有语句。Fork函数可以嵌套四、评语。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值