操作系统实验04 Linux 多进程编程

操作系统实验04 Linux 多进程编程

ID:41037707

大小:162.00 KB

页数:9页

时间:2019-08-14

操作系统实验04 Linux 多进程编程_第1页
操作系统实验04 Linux 多进程编程_第2页
操作系统实验04 Linux 多进程编程_第3页
操作系统实验04 Linux 多进程编程_第4页
操作系统实验04 Linux 多进程编程_第5页
资源描述:

《操作系统实验04 Linux 多进程编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《操作系统》实验报告实验序号: 实验四      实验项目名称:实验04Linux多进程编程学  号1207022103姓  名陈华荣专业、班网络工程实验地点实1-311指导教师李桂森实验时间2014.10.26一、实验目的及要求1.通过本实验的学习,使学生掌握Linux多进程编程的基本方法。2.实验内容:利用Linux多进程实现题目所要求的功能。3.以学生自主训练为主的开放模式组织教学二、实验设备(环境)及要求PC机三、实验内容与步骤1、编写一个显示“HELLO”的c语言程序,并利用GCC编译,然后运行此程序。(提示

2、:若没有gcc,需先安装gcc编译程序)指令:Apt-getinstallupdateApt-getinstallgccCd/home/normaluesrTouchhelloworld.cVimhelloeorld.c在helloworld里编辑进:#includeIntmain(){Printf(“helloworld”);Return0;}然后用gcc进行编译运行:或者直接2、进程的创建:编制一程序,利用系统调用fork()创建两个子进程。程序运行时,系统中有一个父进程和两个子进程活动,分别让他

3、们显示“A”、“B”和“C”,分析程序运行结果。3、用ctrl+alt+F2切换到第二个终端(tty2)并使用另外一个用户登录(可利用第二个实验创建的用户登录),然后使用who命令查看用户登录情况。用ctrl+alt+F1切换到第二个终端(tty1),修改第二步的程序,在每个进程退出前都加上一个sleep(20)的函数来延缓进程的退出,然后运行此程序,立即切换到tty2,使用ps-a命令查看系统运行的进程,观察程序创建的进程都有哪些?pid是多少?4、进程的管道通信:编制一程序,使用系统调用pipe()建立一管道,两个

4、子进程P1和P2分别向管道各写一句话,父进程则从管道中读取出来并显示在屏幕。(提示:利用pipe创建管道,利用write和read函数分别进行写与读的操作,使用wait函数等待子进程结束)运行结果:5、利用Linux多进程编程实现以下功能:创建两个子进程;一个子进程(生产者进程)依次向缓冲区写入整数0,1,2,...,19;另一个子进程(消费者进程)暂停3s后,从缓冲区读数,每次读一个,然后将数字显示出来;父进程等待子进程2(消费者进程)的退出信息,待收集到该信息后,父进程就返回。(提示:用char数组创建缓冲区)码源

5、:#include#include#include#include#includecharglobe_buffer[100];void*read_buffer_thread(void*arg);//这里先声明一下读缓存的线程,具体实现写在后面了intmain(){intres,i;pthread_tread_thread;for(i=0;i<20;i++)globe_buffer[i]=i;printf("Testt

6、hread:writebufferfinish");sleep(3);\这里的3秒是多余,可以不要。res=pthread_create(&read_thread,NULL,read_buffer_thread,NULL);if(res!=0){printf("ReadThreadcreatError!");exit(0);}sleep(1);printf("waitingforreadthreadtofinish...");res=pthread_join(read_thread,NULL);if(res!

7、=0){printf("readthreadjoinfailed!");exit(0);}printf("readthreadtestOK,havefun!!exitByeBye");return0;}void*read_buffer_thread(void*arg){inti,x;printf("Readbufferthreadreaddata:");for(i=0;i<20;i++){x=globe_buffer[i];printf("%d",x);globe_buffer[i]=0;//清空}prin

8、tf("readover");}---------------------------------------------------------------------------------以上程序编译:gcc-D_REENTRANTtest.c-otest.o–lpthread运行这个程序:$./test.o思考题多

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。