1. 程式人生 > >關於kill與signal函式

關於kill與signal函式

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