C++ signal handler sample
来源:互联网 发布:淘宝 已验证正品 编辑:程序博客网 时间:2024/05/02 13:27
:cat signal.c
#include <signal.h>
#include <errno.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
void* sigmgr_thread();
int main()
{
sigset_t bset;
int i;
pid_t pid = getpid();
pthread_t ppid;
// Block SIGTERM and SIGUSR1
sigemptyset(&bset);
sigaddset(&bset, SIGTERM);
sigaddset(&bset, SIGUSR1);
pthread_sigmask(SIG_BLOCK, &bset, NULL);
pthread_create(&ppid, NULL, sig_thread, NULL);
for (i = 0; i < 50; i++) {
printf("in main() sleep/n");
sleep(10);
}
exit (0);
}
void* sig_thread()
{
sigset_t waitset, oset;
siginfo_t info;
int rc;
sigemptyset(&waitset);
sigaddset(&waitset, SIGTERM);
sigaddset(&waitset, SIGUSR1);
while (1) {
printf("in sig_thread()/n");
rc = sigwaitinfo(&waitset, &info);
if (rc != -1) {
printf("sigwaitinfo() get a signal - %d/n", rc);
if (info.si_signo == SIGUSR1)
printf("sigwaitinfo() get a signal - %d/n", rc);
else if (info.si_signo == SIGTERM)
printf("sigwaitinfo() get a signal - %d/n", rc);
} else {
printf("sigwaitinfo() returned err: %d; %s/n", errno, strerror(errno));
}
}
}
:cc signal.c -lrt
:kill -16 $PID
------------------------------------------------------------------------------------------------------------
--------------------------------------Another example-------------------------------------------------
void my_sighandler(int signum)
{
if(signum==SIGUSR1) {
// here 1
} else if(signum==SIGUSR2) {
// here 2
}
}
int main()
{
int pid,k,stat;
struct sigaction user_action;
sigset_t block_mask;
sigfillset(&block_mask);
user_action.sa_handler=my_sighandler;
user_action.sa_mask=block_mask;
user_action.sa_flags=0;
sigaction(SIGUSR1,&user_action,NULL);
sigaction(SIGUSR2,&user_action,NULL);
// here
}
- C++ signal handler sample
- HTML Form Handler Sample
- Install signal handler
- Register signal handler
- QML signal与signal handler系统
- c ctrl-c signal
- signal的全集和信号handler
- signal的全集和信号handler.txt
- gtkglade-WARNING **: could not find signal handler
- linux-signal.c
- C语言Signal
- C函数signal实例
- posix_timer.c------signal机制
- Linux c signal
- 探秘C-signal信号
- C 语言 Signal 函数
- APUE2e之signal function, signal handler, and signal mask on Ubuntu
- (C#)Singleton design pattern sample
- java System的属性参数大全
- FastReport导出至excel时,产生OLE ERROR 800A03EC错误的解决方法
- IT人士不得不看的成长手册
- 进程和线程
- 查看sql server 当前数据库使用的字符集
- C++ signal handler sample
- 女友PMS期间生存指南
- 用一个表中的数据update另一个表中对应的列
- linux错误检测及处理办法
- 中断调用处理程序
- Word文档独立页码创建方法
- 浅谈Java同步机制synchronized对代码作何影响?
- JSTL详解(一)
- Ubuntu9.04下安装Oracle11g