c语言多进程多线程编程(3)
信号要发送到指定的进程,首先调用进程必须有对该进程发送信 号的权限.若调用进程有合适的优先级则具备有权限.若调用进程 的实际或有效的UID等于接收信号的进程的实际UID或用setuid() 系统调用设置的UID,或sig等于SIGCONT同时收发双方进程的会话 号相同,则调用进程也有发送信号的权限.
若进程有发送信号到pid指定的任何一个进程的权限则调用成功, 否则调用失败,没有信号发出.
返回值:调用成功则返回0,否则返回-1.
例子:假设前一个例子进程号为324,现向它发一个SIGINT信号,让它做 信号处理:
kill((pid_t)324,SIGINT);
2.12.alarm() 设置一个进程的超时时钟
功能:设置一个进程的超时时钟. 语法:
#include unsigned int alarm(sec) unsigned int sec; 说明:指示调用进程的超时时钟在指定的时间后向调用进程发送一个 SIGALRM信号.设置超时时钟时时间值不会被放入堆栈中,后一次 设置会把前一次(还未到超时时间)冲掉. 若sec为0,则取消任何以前设置的超时时钟. fork()会将新进程的超时时钟初始化为0.而当一个进程用exec() 族系统调用新的执行文件时,调用前设置的超时时钟在调用后仍 有效. 返回值:返回上次设置超时时钟后到调用时还剩余的时间秒数. 例子:int flag=0; void myself() { flag=1; printf(\ /*若要重新设置SIGALRM信号中断处理函数为本函数则执行 *以下步骤*/ void (*a)(); a=myself; signal(SIGALRM,a); flag=2; } main() { alarm(100); /*100秒后发超时中断信号*/ while (1) { sleep(2000); /*等待中断信号*/ if (flag==1) { printf(\ exit(0); } if (flag==2) { printf(\ printf(\ } } } 2.13.msgsnd() 发送消息到指定的消息队列中 功能:发送消息到指定的消息队列中. 语法: #include int msgsnd(msqid,msgp,msgsz,msgflg) int msqid; void *msgp; size_t msgsz; int msgflg; 说明:发送一个消息到由msqid指定消息队列标识号的消息队列. 参数msgp指向一个用户定义的缓冲区,并且缓冲区的第一个域应 为长整型,指定消息类型,其他数据放在缓冲区的消息中其他正文 区内.下面是消息元素定义: long mtype; char mtext[]; mtype是一个整数,用于接收进程选择消息类型. mtext是一个长度为msgsz字节的任何正文,参数msgsz可从0到系 统允许的最大值间变化. msgflg指定操作行为: . 若(msgflg&IPC_NOWAIT)是真的,消息并不是被立即发送而调用 进程会立即返回. . 若(msgflg&IPC_NOWAIT)不是真的,则调用进程会被挂起直到下 面情况之一发生: * 消息被发送出去. * 消息队列标志被系统删除.系统调用返回-1. * 调用进程接收到一个未被忽略的中断信号,调用进程继续 执行或被终止. 调用成功后,对应指定的消息队列的相关结构做如下动作: . 消息数(msg_qnum)加1. . 消息队列最近发送进程号(msg_lspid)改为调用进程号. . 消息队列发送时间(msg_stime)改为当前系统时间. 以上信息可用命令ipcs -a看到. 返回值:成功则返回0,否则返回-1. 2.14.msgrcv() 从消息队列中取得指定类型的消息 功能:从消息队列中取得指定类型的消息. 语法: #include int msgrcv(msqid,msgp,msgsz,msgtyp,msgflg) int msqid; void *msgp; int msgsz; long msgtyp; int msgflg; 说明:本系统调用从由msqid指定的消息队列中读取一个由msgtyp指定 类型的消息到由msgp指向的缓冲区中,同样的,该缓冲区的结构如 前所述,包括消息类型和消息正文.msgsz为可接收的消息正文的 字节数.若接收到的消息正文的长度大于msgsz,则会被截短到 msgsz字节为止(当消息标志msgflg&MSG_NOERROR为真时),截掉的 部份将被丢失,而且不通知消息发送进程. msgtyp指定消息类型: . 为0则接收消息队列中第一个消息. . 大于0则接收消息队列中第一个类型为msgtyp的消息. . 小于0则接收消息队列中第一个类型值不小于msgtyp绝对值且 类型值又最小的消息. msgflg指定操作行为: . 若(msgflg&IPC_NOWAIT)是真的,调用进程会立即返回,若没有 接收到消息则返回值为-1,errno设置为ENOMSG. . 若(msgflg&IPC_NOWAIT)不是真的,则调用进程会被挂起直到下 面情况之一发生: * 队列中的消息的类型是有效的. * 消息队列标志被系统删除.系统调用返回-1. * 调用进程接收到一个未被忽略的中断信号,调用进程继续 执行或被终止. 调用成功后,对应指定的消息队列的相关结构做如下动作: . 消息数(msg_qnum)减1. . 消息队列最近接收进程号(msg_lrpid)改为调用进程号. . 消息队列接收时间(msg_rtime)改为当前系统时间. 以上信息可用命令ipcs -a看到. 返回值:调用成功则返回值等于接收到实际消息正文的字节数. 不成功则返回-1. 2.15.msgctl() 消息控制操作 功能:消息控制操作 语法: #include int msgctl(msqid,cmd,buf) int msqid,cmd; struct msqid_ds *buf; 说明:本系统调用提供一系列消息控制操作,操作动作由cmd定义,以下 cmd定义值表明了各操作动作的定义. . IPC_STAT:将msqid相关的数据结构中各个元素的当前值放入由 buf指向的结构中. . IPC_SET:将msqid相关的数据结构中的下列元素设置为由buf指 向的结构中的对应值. msg_perm.uid msg_perm.gid msg_perm.mode msg_qbytes 本命令只能由有效UID等于msg_perm.cuid或msg_perm.uid的 进程或有效UID有合适权限的进程操作.只有具有合适权限的 用户才能增加msg_qbytes的值. . IPC_RMID:删除由msqid指示的消息队列.将它从系统中删除并 破坏相关的数据结构. 本命令只能由有效UID等于msg_perm.cuid或msg_perm.uid的 进程或有效UID有合适权限的进程操作. 返回值:调用成功则返回值为0,否则为-1. 2.16.msgget() 取得一个消息队列 功能:取得一个消息队列. 语法: #include 说明:本系统调用返回与参数key相关的消息队列的标识符. 若以下事实成立,则与消息队列相关的标识符和数据结构将被创 建出来: . 若参数key等于IPC_PRIVATE. . 若参数key没有一个已存在的消息队列标识符与之相关,同时值 (msgflg&IPC_CREAT)为真. 创建消息队列时,与新的消息队列标识符相关的数据结构将被初 始化为如下: . msg_perm.cuid和msg_perm.uid设置为调用进程的有效UID. . msg_perm.cgid和msg_perm.gid设置为调用进程的有效GID. . msg_perm.mode访问权限比特位设置为msgflg访问权限比特位. . msg_qnum,msg_lspid,msg_lrpid,msg_stime,msg_rtime设置为0. . msg_ctime设置为当前系统时间. .
…… 此处隐藏:1631字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [资格考试]机械振动与噪声学部分答案
- [资格考试]空调工程课后思考题部分整合版
- [资格考试]电信登高模拟试题
- [资格考试]2018年上海市徐汇区中考物理二模试卷(
- [资格考试]坐标转换及方里网的相关问题(椭球体、
- [资格考试]语文教研组活动记录表
- [资格考试]广东省2006年高应变考试试题
- [资格考试]LTE学习总结—后台操作-数据配置步骤很
- [资格考试]北京市医疗美容主诊医师和外籍整形外科
- [资格考试]中学生广播稿400字3篇
- [资格考试]CL800双模站点CDMA主分集RSSI差异过大
- [资格考试]泵与泵站考试复习题
- [资格考试]4个万能和弦搞定尤克里里即兴弹唱(入
- [资格考试]咽喉与经络的关系
- [资格考试]《云南省国家通用语言文字条例》学习心
- [资格考试]标准化第三范式
- [资格考试]GB-50016-2014-建筑设计防火规范2018修
- [资格考试]五年级上册品社复习资料(第二单元)
- [资格考试]2.对XX公司领导班子和班子成员意见建议
- [资格考试]关于市区违法建设情况的调研报告
- 二0一五年下半年经营管理目标考核方案
- 2014年春八年级英语下第三次月考
- 北师大版语文二年级上册第十五单元《松
- 2016国网江苏省电力公司招聘高校毕业生
- 多渠道促家长督导家长共育和谐 - 图文
- 2018 - 2019学年高中数学第2章圆锥曲线
- 竞争比合作更重要( - 辩论准备稿)课
- “案例积淀式”校本研训的实践与探索
- 新闻必须客观vs新闻不必客观一辩稿
- 福师大作业 比较视野下的外国文学
- 新编大学英语第二册1-7单元课文翻译及
- 年产13万吨天然气蛋白项目可行性研究报
- 河南省洛阳市2018届高三第二次统一考试
- 地下车库建筑设计探讨
- 南京大学应用学科教授研究方向汇编
- 2018年八年级物理全册 第6章 第4节 来
- 毕业论文-浅析余华小说的悲悯性 - 以《
- 2019年整理乡镇城乡环境综合治理工作总
- 广西民族大学留学生招生简章越南语版本
- 故宫旧称紫禁城简介




