- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信号量的操作semop() struct sembuf - ke shi
5.* Principles of Operating System Ke Shi , /courses 目的和要求 掌握Linux操作系统的进程创建等操作。 利用Linux操作系统提供的信号量工具实现进程间的同步。 掌握对共享内存的相关操作 进程的相关操作 头文件:#include unistd.h 进程创建函数:fork() 子进程中返回0,父进程中返回子进程ID,出错返回-1 。一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。 例:int pid=fork(); LINUX的IPC LINUX的IPC SYSTEM V的IPC 信号量(semaphore set) 消息队列(message queue) 共享内存(shared memory) shell命令 ipcs, ipcrm访问 LINUX的IPC 创建信号量 头文件:#include sys/sem.h int semget(key_t key,int nsems,int semflg); 参数key表示所创建或打开信号量集的键 双方直接设置为一个相同的整数为key值 用IPC_PRIVA让系统自动产生一个key值, 用ftok函数将一个路径转换为key值 参数nsems表示创建的信号量集中的信号量的个数,该参数只在创建信号量集时有效,几乎总是取值为1 参数flag表示调用函数的操作类型,也可用于设置信号量集的访问权限,两者通过or表示,IPC_CREAT, IPC_EXCL 信号量的操作semop() int semop(int semid,struct sembuf*sops,unsign nsops); semid为信号量集引用ID。 sops是一个sembuff结构数组,sembuff结构用于指定调用semop函数所作的操作,其中每个元素表是一个操作,由于此函数是一个原子操作,一旦执行就将执行数组中的所有操作 nsops:信号操作结构的数量,恒大于或等于1。 信号量的操作semop() struct sembuf { unsigned short sem_num; /* 信号量编号 */ short sem_op; /* 信号量操作 */ short sem_flg; /* 操作标志 */ } sem_flg用于对操作进行适当的控制,主要有2个控制标志。 IPC_NOWAIT 当指定的操作不能完成时,进程不等待立即返回,返回值为-1,errno置为EAGAIN。 SEM_UNDO(建议) 进程退出时,执行信号量解除(undo)操作。 P、V操作 s_empty = semget(IPC_PRIVATE,1,IPC_CREAT|IPC_EXCL|0777); int p(int semid) { struct sembuf sops={0,- 1, SEM_UNDO}; return (semop(semid,sops,1)); } int v(int semid) { struct sembuf sops={0, +1,ISEM_UNDO}; return (semop(semid,sops,1)); } 信号量的控制 int semctl(int semid,int semnum,int cmd,union semunarg); 第4个参数(可选) union semun{ int val; /*用于SETVAL命令,指明要设置的值*/ struct semid_ds *buf; /*用于IPC_STAT/IPC_IPC_SET命令,用来存放信号量集合数据结构*/ unsigned short *array; /*用于GETALL/SETALL命令,用来存放所获得的或是要设置信号量集合中所有信号量的值*/ } arg; 信号量的控制 “cmd” parameter IPC_STAT: 对指定的信号量标识返回arg.semid_ds结构中的当前值 IPC_SET: 在进程有足够权限的前提下,把信号量集合的当前关联值置为arg.semid_ds结构给出的值 IPC_RMID: 删除信号量集合 SETVAL: 设置信号量集合中由semnum指定的单个信号量的值(设为arg.val) Linux共享内存 Linux共享内存 头文件:#include sys/ipc.h #include sys/shm.h 要使用一块共享内存,进程必须首先分配它。随后需要访问这个共享内存块的每一个进程都必须将这个共享内存绑定
您可能关注的文档
- 深圳二中考前适应性考试化学试题.doc
- 提高木质纤维素酶解糖化效率的研究进展.pdf
- 硅藻土吸附增强的( rs)22 ,42dp 对映体选择性酶促水解3 - 土壤学报.pdf
- 12-张晓娟-7株泡菜发酵益生功能菌种的鉴定--《食品发酵与科技》2012 .doc
- 芽孢杆菌属及其近缘属的分类研究 - yzxzcom.doc
- 北京德恒律师事务所关于武汉合缘绿色生物股份有限公司股票在全国 .pdf
- 塞尼拉斯与印尼国家石油公司发布合作声明促进印尼燃料乙醇项目的 .pdf
- 国际管制的精神药物清单 - incb.pdf
- 绿色能源取代核发.ppt
- 近几年高考生物图表类选择题赏析 舟山中学 杨重云 1.坐标曲线图题 .doc
- 甲萘威对普通小球藻生长和主要生理指标的影响 - 江苏农业科学.pdf
- tau 蛋白的研究进展 - 中华神经创伤.pdf
- 大棚翠冠梨果实糖积累及蔗糖代谢相关酶活性的研究 - researchgate.pdf
- 2016年4月期中复习1.doc
- 病毒硫氧还蛋白基因在neuro2a细胞中的重组与表达 - 中国组织工程研究.pdf
- 1 ,2 ,42三氯苯胁迫对萌发大豆种子中活性氧的影响3 - 应用生态学报.pdf
- 含rgd多肽的重组丝蛋白的设计与合成.pdf
- 人补体受体1型活性片段scr15-18在毕赤酵母中的表达、纯化及活性 .doc
- 纤维素酶法提取土人参多糖的工艺研究 - 中国现代应用药学.pdf
- 工业微生物的酸胁迫响应及其抵御策略 - 生物通.pdf
最近下载
- (2025秋)人教版二年级数学上册全册教案(新教材).pdf
- 第二单元大单元教学设计 高一语文必修上册.docx VIP
- 2025年燃气安全生产管理人员模拟考试题库及答案.docx VIP
- 高中音乐 人音版 必修《音乐鉴赏》《舞动心弦——舞蹈音乐》 第四课时.pptx VIP
- 住院医师临床思维培养ppt模板.pptx VIP
- 反渗透纳滤组合工艺高盐废水深度处理及零排放预浓缩.pdf VIP
- 超声成像系统数字扫描变换器(参考).pptx VIP
- JTG3441-2024 公路工程无机结合料稳定材料试验规程.pdf VIP
- 腹腔镜下卵巢囊肿剥除术配合.pptx VIP
- 2026届高三语文一轮复习教学计划.docx
文档评论(0)