kill()与signal实际上是一套信号的发射与接受
kill命令在初学时,习惯上用作杀死进程
但是实际上kill函数的功能是发送信号给进程
(终止进程的时候发送SIGTERM信号)
头文件
#include <signal.h>
(#include <sys/types>感觉其实不需要)
函数原型
int kill(pit_t pid,int sig )
sig是信号类型
函数的返回值,成功返回0,失败返回-1;
信号的设置函数signal
NAME
signal - ANSI C signal handling
SYNOPSIS
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
signum是指定的信号代码
后面的hander可以是自定义的信号处理函数
或者SIG_IGN,SIG_DFL;
附上一段代码
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
//#include <unistd.h>
//#include <sys/ipc.h>
int my_alarm()
{
printf("ding~~~\n");
}
int main()
{
pid_t new_pid;
new_pid=fork();
if(new_pid==-1)
perror("[err]");
if(new_pid>0)
{
printf("parent\n");
(void )signal(SIGALRM,my_alarm);
wait(NULL);
exit(1);
}
if(new_pid==0)
{
printf("child\n");
int i;
for(i=0;i<5;i++)
sleep(1);
kill(getppid(),SIGALRM);
exit(0);
return 0;
}
有问题加qq2410474020