linux学习笔记10-发送信号
发送信号
kill函数,向其他进程发送信号
//kill 所需头文件
#include <sys/types.h>
#include <signal.h>
//参数1是进程id 参数2是信号类型,如SIGINT
int kill(pid_t pid, int sig);
使用kill函数
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
int main(int argc,char *argv[])
{
if(argc < 2)
{
printf("no param!");
return -1;
}
int pid = atoi(argv[1]); //进程id
kill(pid,SIGINT); //向这个进程id发送SIGINT信号
return 0;
}
raise函数,向自己发送信号
#include <signal.h>
//指定信号
int raise(int sig);
raise函数使用
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
int main(int argc,char *argv[])
{
raise(SIGINT); //发送SIGINT信号
printf("hello signal!\n");
return 0;
}
alarm函数
#include <unistd.h>
//参数为秒数
unsigned int alarm(unsigned int seconds);
alarm使用
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void signal_handler(int sign)
{
switch(sign)
{
case SIGINT:
printf("signal SIGINT!\n");
sleep(5);
break;
case SIGALRM:
printf("sigalrm 5 seconds!\n");
alarm(10); //这里实现每间隔10秒触发一次
break;
}
}
int main(int argc,char *argv[])
{
signal(SIGINT,signal_handler); //注册SIGINT信号,触发时调用signal_handler函数
signal(SIGALRM,signal_handler);
alarm(10); //10秒后触发SIGALRM信号(只执行一次)
int count = 0;
while(count < 50)
{
printf("print %d\n",++count);
sleep(1);
}
return 0;
}
秋风
2016-11-25