进程调用实验.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程调用实验

附录:与实验相关的系统调用 1、int fork( )创建一个新进程 返回值的意义: 0,创建子进程,从子进程返回的id值 -1,创建失败 大于0,从父进程返回的子进程id值 2、lockf(files, function, size)锁定/解锁文件或文件的某段 该函数的头文件为:#include unistd.h 参数定义: int lockf(int files, int function, long size) 含义: files是文件描述符; function为1表示锁定,为0表示解锁; size是锁定或解锁的字节数,若用0,表示从文件的当前位置到文件尾。 3、msgget(key, flag)获得一个消息的描述符,该描述符指定一个消息队列以便用于其它系统调用 该函数使用头文件: #include sys/types.h #include sys/ipc.h #include sys/msg.h 参数定义:int msgget(key_t key, int flag) 语法格式:msgqid=msgget(key, flag) 含义:msgqid是该系统调用返回的描述符,失败则返回-1 flag本身由操作允许权和控制命令值相“或”得到 4、msgsnd(id,msgp,size,flag)发送消息 该函数使用头文件: #include sys/types.h #include sys/ipc.h #include sys/msg.h 参数定义:int msgsnd(int id, struct msgbuf * msgp, int size, size flag) 含义:id是返回消息队列的描述符; msgp是指向用户存储区的一个构造体指针; size指示由msgp指向的数据结构中字符数组的长度,即消息长度; flag规定当核心用尽内部缓冲空间时应执行的动作。若在标志flag中未设置IPC_NOWAIT位,则当该消息队列中的字节数超过一最大值时,或系统范围的消息数超过某一最大值时,调用msgsnd的进程睡眠。若设置了IPC_NOWAIT,则在此情况下,msgsnd立即返回。 5、msgrcv(id,msgp,size,type,flag)接收消息 语法格式:count=msgrcv(id,msgp,size,type,flag)。count返回消息字节数。 头文件和参数含义基本同msgsnd一样。不同处在于: 多了参数type。type表示用户要读的消息的类型。type为0,表示接收该队列的第一个消息;为正,接收类型type的第一个消息;为负,接收小于或等于type绝对值的最低类型的第一个消息。 参数flag:规定倘若该队列无消息,核心应当做什么。如果在flag中设置了IPC_NOWAIT 标志,则立即返回;若设置了MSG_NOERROR标志,且所接收的消息大小大于size,核心截断所接收的消息。 6、msgctl(id,cmd,buf)查询或设置一个消息描述符的状态,或删除一个消息描述符 头文件同上述3、4、5函数 参数:id,消息描述符;buf,是含有控制参数或查询结果的用户数据结构的地址; cmd,命令类的型: 若为IPC_STAT,将与id相关联的消息队列首标读如buf; 若为IPC_SET,为该消息队列设置状态 若为IPC_RMID,删除id代表的消息队列 7、shmget(key,size,flag)获得一个共享存储区,存储区关键字为key,存储区长度为size 该函数使用头文件: #include sys/types.h #include sys/ipc.h #include sys/shm.h 参数定义:int shmget(key_t key, int size, int flag) 语法格式:id=shmget(key, size, flag),其中,id是共享存储区的标识符 8、shmat(id, addr, flag)从逻辑上将一个共享存储区附接到进程的虚拟地址空间上 函数头文件同7 语法格式:virtaddr = shmat (id, addr, flag) 参数含义:id,共享存储区的标识符;addr,是用户要使用共享存储区附接的虚地址;flag规定对此区的读写权限。 9、shmdt(addr)把一个共享存储区从指定进程的虚地址断开 函数头文件同7 语法:int shmdt(char * addr),若成功,返回0,否则返回-1。addr是该系统调用所返回的地址。 10、shmctl(id, cmd, buf)对与共享存储区关联的参数进行操作,从而控制共享存储区 头文件同7 语法格式:int shmctl(int id, int cmd, struct shmi

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档