信號的發送的關鍵是使系統知道向哪個進程發送信號以及發送什麼信號。其中要注意的是能否向某一進程發送某個特定的信號是和用戶的權限密切相關的。例如,只有系統管理員才能發送SIGKILL信號終止進程。
用於發送信號的系統調用。
#include <sys/types.h> #include <signal.h> #include <unistd.h> #include <sys/time.h> int kill(pid_t pid,int signumber); int raise(int signumber); unsigned int alarm(unsigned intseconds); int setitimer(int which,const structitimerval *value,struct itimerval *oldvalue);
raise:用於向進程自身發送信號。成功返回0,失敗返回-1。
#include <stdio.h> #include <signal.h> void func(); void main() { charbuffer[100]; if(SIG_ERR== signal(SIGINT,&func)) { printf("signalerror!!\n"); exit(-1); } for(;;) { fgets(buffer,sizeof(buffer),stdin); if(strcmp(buffer,"sigint\n")== 0) raise(SIGINT); else printf("nocampare\n"); } } void func() { printf("hellofunc\n"); }