關於kill與signal函式
阿新 • • 發佈:2018-11-23
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