- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
蒋潞信号函数手册
1信号:
1.viod(*signal(int sig,void(*func)(int)))(int);
sigaction(int signum,const struct sigaction *act,struct sigaction *oldcat);
int sig :要安装的信号值;
void(*func):对sig信号的处理,该处理方式有以下两个宏;
1.SIG_DEF:采用系统默认的方式处理信号。
2.SIG_IGN:忽略信号。
另外该函数的第二个参数也可是函数指针,用户可自定义对信号的处理函数。
2.int kill(pid_t pid,int sig);
Pid: pid0,给PID为pid的进程发送信号;
pid=0,给同一个进程组的所有进程发送信号;
pid0pid!=-1,给进程组的所有ID为-pid的 进程发送信号;
pid=-1,给出自身之外PID大于1的进程发送信 号;
Sig: sig为要发送的信号值。当它为0时不发送任何 信号,通常用于检查进程是否具体像目标进程发 送信号的权限。
当kill()函数发送信号成功时函数返回0,否则返回-1.通过errno以及使用perror可以查看错误信息:
EINVAL:所发送的信号无效;
EPERM:没有向目标进程发送信号的权限;
ESRCH:目标进程不存在或者进程已经终止,处于僵尸状态;
3.int raise(int sig);
和函数kill()的功能一样,区别在于raise()给自身进程发送信号,所以只有一个信号参数没有进程ID;
4.alarm(unsigned int seconds);
Seconds: 设置的时间长度;
设当置alarm()之后,在指定的时间后,将给线程本身发送一个SIGALARM信号。当seconds为0时将清除当前进程的alarm()的设置。
5.int setitimer(int which,const struct timerval *value,struct itimerval *ovalue)
which: 指定定时器类型:
ITIMER_REAL:设定绝对时间经过指定的时间后, 内核将 发送SIGALARM号给本进程;
ITIMER_VIRTUAL:设定程序执行时间,只有程序 被调度 执行的时候才记录时间,经过指定的时间 后,内核将发送SIGALARM信号给本进程。
ITIMER_PROF:设定进程执行以及内核因本进程而消耗的时间和,经过指定的时间后,内核将发送ITIMER_VIRTUAL信号给本进程。
itimerval是一个函数结构体。
函数成功调用返回0,失败返回-1;
6.abort():向进程发送SIGABORT信号,默认情况下进程会异常退出,也可定义自己的信号处理函数,通常用于做程序退出前的统一操作和处理。
管道:
1.int pipe (int fildes[2]);
pipe 将建立一对描述符,fildes[0]用与从文件中读取数据,fildes[1]用在文件中写入数据。当pipe管道建立后必须要使用fork()派生子进程,然后父子进程分别关闭一个文件描述符。
2.int makefifo(const char*pathname,mode_t mode);
Pathname: 为FIFO文件的路径名;
mode: 为管道的操作权限;
3信号量
1.key_t ftok(const char *pathname,int proj_id);
Pathname:必须是一个已经存在并具有访问权限的文件;
Proj_id:只有最大的8个字节有效所以用ASCII字符来作为 proj_id。
2.int semget(key_t key,int nsems,int semflg);
Key_t key:信号量的键值;
Nsems:信号量的数目;
Semflg: IPC_CREAT:如果key指定的信号量集不存在则 创建一个。
IPC_EXCL:和IPC_CREAT一起使用如果信号量已 经存在则返回错误。
Semget()调用成功时返回与键值key对应的信号集的标示符,否则返回-1.
3.int semop(int semid,struct sembuf*sops,unsigned nsops);
Semid:信号量集的ID;
Sops:指向一个sembuf的结构体数组;
Nsops:为sops指向数组的大小;
Strcut sembuf{
unsigned short sem_num;/信号量在信号量
文档评论(0)