资源描述:
《蒋潞 信号函数手册》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1信号:1.viod(*signal(intsig,void(*func)(int)))(int);sigaction(intsignum,conststructsigaction*act,structsigaction*oldcat);intsig:要安装的信号值;void(*func):对sig信号的处理,该处理方式有以下两个宏;1.SIG_DEF:采用系统默认的方式处理信号。2.SIG_IGN:忽略信号。另外该函数的第二个参数也可是函数指针,用户可自定义对信号的处理函数。2.intkill(pid_tpid,intsig);Pid
2、:pid>0,给PID为pid的进程发送信号;pid=0,给同一个进程组的所有进程发送信号;pid<0&&pid!=-1,给进程组的所有ID为-pid的进程发送信号;pid=-1,给出自身之外PID大于1的进程发送信号;Sig:sig为要发送的信号值。当它为0时不发送任何信号,通常用于检查进程是否具体像目标进程发送信号的权限。当kill()函数发送信号成功时函数返回0,否则返回-1.通过errno以及使用perror可以查看错误信息:EINVAL:所发送的信号无效;EPERM:没有向目标进程发送信号的权限;ESRCH:目标进程不存在或者
3、进程已经终止,处于僵尸状态;3.intraise(intsig);和函数kill()的功能一样,区别在于raise()给自身进程发送信号,所以只有一个信号参数没有进程ID;4.alarm(unsignedintseconds);Seconds:设置的时间长度;设当置alarm()之后,在指定的时间后,将给线程本身发送一个SIGALARM信号。当seconds为0时将清除当前进程的alarm()的设置。5.intsetitimer(intwhich,conststructtimerval*value,structitimerval*ova
4、lue)which:指定定时器类型:ITIMER_REAL:设定绝对时间经过指定的时间后,内核将发送SIGALARM号给本进程;ITIMER_VIRTUAL:设定程序执行时间,只有程序被调度执行的时候才记录时间,经过指定的时间后,内核将发送SIGALARM信号给本进程。ITIMER_PROF:设定进程执行以及内核因本进程而消耗的时间和,经过指定的时间后,内核将发送ITIMER_VIRTUAL信号给本进程。itimerval是一个函数结构体。函数成功调用返回0,失败返回-1;6.abort():向进程发送SIGABORT信号,默认情况下进
5、程会异常退出,也可定义自己的信号处理函数,通常用于做程序退出前的统一操作和处理。管道:1.intpipe(intfildes[2]);pipe将建立一对描述符,fildes[0]用与从文件中读取数据,fildes[1]用在文件中写入数据。当pipe管道建立后必须要使用fork()派生子进程,然后父子进程分别关闭一个文件描述符。2.intmakefifo(constchar*pathname,mode_tmode);Pathname:为FIFO文件的路径名;mode:为管道的操作权限;3信号量1.key_tftok(constchar*p
6、athname,intproj_id);Pathname:必须是一个已经存在并具有访问权限的文件;Proj_id:只有最大的8个字节有效所以用ASCII字符来作为proj_id。2.intsemget(key_tkey,intnsems,intsemflg);Key_tkey:信号量的键值;Nsems:信号量的数目;Semflg:IPC_CREAT:如果key指定的信号量集不存在则创建一个。IPC_EXCL:和IPC_CREAT一起使用如果信号量已经存在则返回错误。Semget()调用成功时返回与键值key对应的信号集的标示符,否则返回
7、-1.3.intsemop(intsemid,structsembuf*sops,unsignednsops);Semid:信号量集的ID;Sops:指向一个sembuf的结构体数组;Nsops:为sops指向数组的大小;Strcutsembuf{unsignedshortsem_num;/信号量在信号量集中的索引号。shortsem_op;/对信号量的操作。shortsem_flg;/操作标志位。};Sem_flg:是一个符号位。指定IPC_NOMWAAIT以防止操作阻塞,如果该操作本应阻塞则semop调用失败。如果sem_flg指定
8、的SEM_UNDO,Linux会在进程退出时自动撤销该次操作。4.intsemtimeop(intsemid,structsembuf*sops,unsignednsops,structtimespec*t