实验三linux进程并发程序设计,实验三Linux进程并发程序设计.doc

实验三Linux进程并发程序设计

湖北工业大学工程技术学院实验报告

课程名称: 操作系统 实验内容: 实验三Linux进程并发程序设计 学院: 工 程 技 术 学 院 专业班级 11gb软件2班日期: 2013.11.7 教师: 贺红艳 成绩: 一、实验目的1、掌握Linux环境下的进程并发程序的控制。2、掌握gcc编译过程

二、预习内容1、gcc编译器

GNU C 编译器 GCC gcc [options] [filenames]

不用任何选项编译一个程序时, GCC 将会建立 假定编译成功 一个名为a.out 的可执行文件. 例如, gcc test.c 将在当前目录下产生一个叫a.out 的文件: 用 -o 编译选项来为将产生的可执行文件指定一个文件名来代替 a.outgcc -o count count.c 注意: 当你使用 -o 选项时, -o 后面必须跟一个文件名.“pid %d\n”,getpid ;

(3)getppid

取得目前进程的父进程识别码。

系统调用格式: int getppid 例如:#include main printf “My parent’s pid %d\n”,getpid ;

(4)进程同步

pid wait stat-addr ;

其中,pid是中止的子进程的pid号,stat-addr是子进程结束时返回的状态信息存放的地址。如果只对进程的同步感兴趣,可以简写为wait 0 ;执行系统调用wait暂停父进程的执行,使之处于等待状态,一旦子进程执行完毕,处于等待的父进程会被唤醒重新进入执行,这样可以保证子进程与父进程的执行同步。

(5)进程的终止

exit status ;

通过该系统调用进程可以自己终止自己的运行,使进程进入僵死状态。这时被终止的进程释放它占有的所有资源,但保留进程控制块的内容(即或proc结构的内容)。其中status是一个整数,它作为一种结束时的状态传递给该进程的父进程。

(6)进程创建程序实示例:

#include main int p1; while p1 fork -1 ; if p1 0 printf “This is a child process.” ;/*在子进程中*/ else /*在父进程中*/ printf “This is a parent process.” ; 二、实验步骤1、简单C程序的运行。

1)?

2)?

#include

main printf “hello world”\n” ;

printf “Wellcome!”\n” ; 3) 编译 :gcc –o test test.c

4 修改test 文件的访问权限,使其可以被执行。chmod a+x /test

4 运行 ./test

2、编写一段程序,使其完成:父进程创建两个子进程,每个进程都在屏幕在显示自己的进程ID号以及其父进程的ID号。

写出实验步骤与结果:

3、

#include

#include

main // ①

int pid fork ;?

// ②??

if pid 0 sleep 3 ; printf "Child: pid %d, ppid %d\n", getpid , getppid ; else printf "Parent: Child %d, pid %d, ppid %d\n", pid, getpid , getppid ; wait 0 ;?//④ printf "After Child ends.\n" ;???//?⑤ printf "In which process?\n" ; // ③ 写出程序,并分析执行结果,并回答In which process?问题。

子进程先sleep3秒,父进程先打印,然后等待子进程结束。

第一个In which process?在子进程中

第二个In which process?在父进程中4、把第3题中位置③处分别移至位置①和②处,分析执行结果,并回答In which process?问题。

In which process?只在父进程中执行

In which process?在父字进程中都会先执行5、程序修改:将第3题中程序中④⑤去掉,写出程序结果,并分析原因。

子进程在父进程结束后依然存在,子进程变成孤儿进程,有1号进程接管。三、总结利用fork创建子进程,当返回值等于0的时候处于子进程中,大于0时为子进程的进程号,为父进程。

子进程会复制fork函数以下的所有语句。

Fork函数可以嵌套四、评语

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值