标签:调用函数 信号处理 member raise 指针 new hand name --
1.信号处理
#include <signal.h> typedef void(*sighander_t)(int); sighander_t signal(int signum,sighander_t hander) 成功返回原信号处理方式,失败返回SIGERR
--signum :信号编号
--hander: 信号处理方式
SIG_IGN:忽略信号
SIG_DFL:默认操作
信号处理函数指针 -捕获信号
2.信号处理函数
void sighander(int signum) { 信号处理代码; }
3.调用函数发送信号
杀死进程信号
#include <signal.h> int kill (pid_t pid,int signum); 成功发送信号并返回0,失败-1
向调用进程发送信号
#include <signal.h> int raise(int signum); raise函数是向调用进程发送信号 对单线程程序来说,相当于 kill(getpid,signum); 对多线程程序来说,相当于 pthread_kill(pthread_self,signum);
4.暂停
#include <unistd.h> int pause(void); 该函数无时限睡眠,只到收到信号发生,改变自身状态 成功阻塞,失败-1;
5.睡眠
sleep(seconds)
#include <unistd.h> unsigned int sleep(unsigned int seconds); 返回0或剩余秒数 该函数调用进(线)程睡眠seconds秒,除非信号打破这种状态
usleep
#include <unistd.h> int usleep(usecond_t usec); --usec 微秒 成功返回0,失败 -1
6.闹钟
alarm
#include <unistd.h> unsigned int alarm(unsigned int seconds); 返回剩余秒数
7.信号集
填满信号集
#include <signal.h> int sigfillset(sigset_t* sigset); --sigset :信号集
清空信号集
#include <signal.h> int sigemptyset(sigset_t* sigset); 成功0,失败-1
加入信号
#include <signal.h> int sigaddset(sigset_t* sigset,int signum); 成功0,失败-1 --sigset :信号集 --signum:信号编号
删除信号
#include <signal.h> int sigdelete(sigset_t* sigset,int signum); 成功0,失败-1
判断信号是否在信号集中
#include <signal.h> sigismember(const sigset_t* sigset,int signum); 有返回1,没有0,失败-1
8.信号屏蔽
信号掩码
#include <signal.h> int sigprocmask(int how,const sigest_t* sigset,sigset_t* oldsigset); --how有一下取值 SIG_BLOCK 将sigset信号加入当前信号掩码 SIG_UNBLOCK 从当前信号掩码中删除sigset信号 SIG_SETMASK sigset设置当前信号掩码
获取调用进程的未决信号
#include <signal.h> int sigpending(sigset_t* sigset); 成功返回0,失败返回-1 输出未决信号集 sigset
9.定时器
#include <sys/time.h> int setitimer(int which, const struct itimerval* new_value, struct itimercal* old value); 成功返回0,失败返回-1 --which有下面取值 ITIMER_REAL 真实定时器 ITIMER_VIRTUAL 虚拟定时器 ITIMER_PROF 实用定时器 struct itimerval{ //重复间隔,取0发送一个信号后,停止 struct timerval it_interval; //初始间隔,取0立即停止计时器 struct timerval it_value; }; struct timerval{ long tv_sec; long tv_usec; };
10.管道
mkfifo myfifo //创建有名管道
#include <sys/stat.h> int mkfifo(const char* pathname, mode_t mode); --pathname :文件路径 --mode:权限模式
无名管道-- 用于父子进程通信
#include <unistd.h> int pipe(int pipefd[2]); 成功0,失败-1 pipefd:输出两个文件描述符 pipefd[0]: 无名管道读取数据端 pipefd[1]:无名管道写入数据端
标签:调用函数 信号处理 member raise 指针 new hand name --
原文地址:http://www.cnblogs.com/Kernel001/p/7808640.html