下载此文档

实验4进程通信.doc


文档分类:IT计算机 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
1、加深理解进程通信的方法与原理;掌握如何利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通信。实验环境操作系统:Win732位虚拟机:VmwareLinux系统: 1、了解系统调用pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功能和实现过程。2、编写一C语言程序,使其用管道来实现父子进程间通信。子进程向父进程发送字符串“issendingamessagetoparent!”;父进程则从管道中读出子进程发来的消息,并将其显示到屏幕上,然后终止。 3、运行该程序,观察、记录并简单分析其运行结果。,当一个管道建立时,它会创建两个文件描述符fds[0]和fds[1],其中fds[0]固定用于读管道,而fd[1]固定用于写管道,这样就构成了一个半双工的通道,管道关闭时只需将这两个文件描述符关闭即可,可使用普通的close函数逐个关闭各个文件描述符,创建管道可以通过调用pipe来实现。调试过程及实验结果msgget()系统调用格式intmsgget(key_tkey,intmsgflg);功能:获取与某个键关联的消息队列标识。消息队列被建立的情况有两种:(1)如果键的值是IPC_PRIVATE。(2)或者键的值不是IPC_PRIVATE,并且键所对应的消息队列不存在,同时标志中指定IPC_CREAT。参数定义key:消息队列关联的键。msgflg:消息队列的建立标志和存取权限msgsnd()和msgrcv()系统调用格式intmsgsnd(intmsqid,constvoid*msgp,size_tmsgsz,intmsgflg);ssize_tmsgrcv(intmsqid,void*msgp,size_tmsgsz,longmsgtyp,intmsgflg);功能:在消息队列上进行收发消息。为了发送消息,调用进程对消息队列必须有写权限。接收消息时必须有读权限。参数定义msqid:消息队列的识别码。msgp:指向消息缓冲区的指针,此位置用来暂时存储发送和接收的消息,是一个用户可定义的通用结构,形态如下structmsgbuf{longmtype;/*消息类型,必须>0*/charmtext[100];/*消息文本*/};msgsz:消息的大小。msgtyp:从消息队列内读取的消息形态。如果值为零,则表示消息队列中的所有消息都会被读取。msgctl()系统调用格式intmsgctl(intmsqid,intcmd,structmsqid_ds*buf);功能:在指定的消息队列上执行某种控制操作。参数定义msqid:消息队列识别码。shmget()用于创建(或者获取)一个由key键值指定的共享内存对象,返回该对象的系统标识符:shmid;系统调用格式:shmid=shmget(key,size,flag)该函数使用头文件如下:#include<sys/>#include<sys/>#include<sys/shm

实验4进程通信 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人luyinyzhi
  • 文件大小0 KB
  • 时间2014-11-22