- 4
- 0
- 约 11页
- 2017-01-30 发布于重庆
- 举报
进程通信预备知识
需要用到的系统调用
实验可能需要用到的主要系统调用和库函数在下面列出,详细的使用方法说明通过“man 2 系统调用名”或者“man 3 函数名”命令获取。
fork() 创建一个子进程,通过返回值区分是在父进程还是子进程中执行;
wait() 等待子进程执行完成;
getpid() 获取当前进程id;
shmget() 建立一个共享存储区;
shmctl() 操纵一个共享存储区;
shmat() 把一个共享存储区附接到进程内存空间;
shmdt() 把一个已经附接的共享存储区从进程内存空间断开;
msgget() 建立一个消息队列;
msgctl() 操纵一个消息队列;
msgsnd() 发送消息;
msgrcv() 接收消息;
signal() 设置对信号的处理方式或处理过程;
pipe() 打开管道;
lockf() 锁定一个文件。
一、管道通信
1.系统调用lockf (fd,mode,size)对指定文件的指定区域(由size指示)进行加锁或解锁,以实现进程的同步与互斥。其中fd是文件描述字;mode是锁定方式,=1表示加锁,=0表示解锁,size是指定文件fd的指定区域,用0表示从当前位置到文件尾。进程管道的通信建立进程间的管道,格式为:pipe(fd); int fd[2]; pipe(fd) 读端fd[0]
write(fd[1],buf,size) read(fd[0],buf,size)
3.write()写文件函数,把buf中的长度为size字符的消息送入管道入口fd[1]。
4.read()读文件函数,从管道出口fd[0]读出size字符的消息置入buf中。
5.系统调用sleep(second)用于进程的同步与互斥,自变量是暂停秒数。其功能是使现行进程暂停执行由自变量规定的秒数。
6.sprintf()格式化输出到数组的函数。
7.系统调用exit()和wait()参考课本238页。
二、利用消息机制进行进程间的通信
1、msgget( )
如果希望创建一个新的消息队列,或者希望存取一个已经存在的消息队列,你可以使用系统调用msgget()。
系统调用:msgget();
原型:int msgget(key_t key, int msgflg);
返回值:如果成功,返回消息队列标识符如果失败,则返回-1msgqid=msgget(MSGKEY,0777|IPC_CREAT);
第一个参数是消息队列对象的关键字(key),函数将它与已有的消息队列对象的关键字进行比较来判断消息队列对象是否已经创建。第二个参数,msgflg 控制的。它可以取下面的几个值:IPC_CREAT :如果消息队列对象不存在,则创建之,否则则进行打开操作;IPC_EXCL:和IPC_CREAT 一起使用(用”|”连接),如果消息对象不存在则创建之,否则产生一个错误并返回。如果单独使用IPC_CREAT 标志,msgget()函数要么返回一个已经存在的消息队列对象的标识符,要么返回一个新建立的消息队列对象的标识符。如果将IPC_CREAT 和IPC_EXCL标志一起使用,msgget()将返回一个新建的消息对象的标识符,或者返回-1 如果消息队列对象已存在。IPC_EXCL 标志本身并没有太大的意义,但和IPC_CREAT 标志一起使用可以用来保证所得的消息队列对象是新创建的而不是打开的已有的对象。除了以上的两个标志以外,在msgflg 标志中还可以有存取权限控制符。这种控制符的意义和文件系统中的权限控制符是类似的。msgsnd ()
msgsnd(msgqid,msg,1030,0);
msgsnd()函数是用来向消息队列发送消息的。在linux/msg.h 它的函数定义是这样的:系统调用: msgsnd()函数声明: int msgsnd ( int msqid, struct msgbuf *msgp, int msgsz, int msgflg )返回值: 0 on success-1 on error
参数解释:
第一个参数msqid 是消息队列对象的标识符(由msgget()函数得到)第二个参数msgp 指向要发送的消息所在的内存第三个参数msgsz 是要发送信息的长度(字节数),可以用以下的公式计算:msgsz = sizeof(struct mymsgbuf) - sizeof(long);第四个参数是控制函数行为的标志,可以取以下的值:0,忽略标志位;msgrcv ()
msgrcv()函数被用来从消息队列中取出消息。它在linux/msg.h中的定义是这样的:系统调用: msgrcv()函数声明: int
您可能关注的文档
- 应用技术学院学生约谈制度.doc
- 南昌大学计算机应用技术调剂生复试经验.doc
- 成都信息工程大学 附:技术合同填写说明.doc
- 安卓面试题及答案详解.docx
- 辽宁工程技术大学供电技术09B卷答案.doc
- 操作系统实验报告-3901130721-谭淇蔚.docx
- =5内核启动流程之(start_kernel()-rest_init()-cpu_idle() schedule() 0&1号进程).doc
- 西伯利亚联邦大学简介.doc
- 广东省广州市白云区竹料第一中学2025-2026学年八年级上学期10月月考道德与法治试题(含答案).docx
- 广东省广州市绿翠现代实验学校2019-2020学年八年级10月月考道德与法治试题(含答案).docx
最近下载
- 一种三相水成膜泡沫灭火剂、其制备方法及应用.pdf VIP
- 一种水成膜泡沫灭火剂及其制备方法与流程.docx VIP
- 一种环保型泡沫灭火剂及其制备方法与流程.docx VIP
- 一种玄武岩三相泡沫灭火剂及其制备方法与流程.docx VIP
- 钻井参数监测仪使用说明书中.doc VIP
- 北京市平谷区2025年网格员笔试真题及答案解析.docx
- 2025年教科版六年级下册《科学》全册教案 .pdf VIP
- GB50499-2009 麻纺织工厂设计规范.pdf VIP
- 《理解当代中国:高级中文听说教程》【教师用书】 第1~12单元.docx VIP
- 一种结构化的政策知识图谱构建方法及系统.pdf VIP
原创力文档

文档评论(0)