鍍金池/ 教程/ C/ signal() - C函數(shù)
qsort() - C語(yǔ)言庫(kù)函數(shù)
strxfrm() - C語(yǔ)言庫(kù)函數(shù)
difftime() - C語(yǔ)言庫(kù)函數(shù)
isdigit() - C函數(shù)
<limits.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
ldiv() - C語(yǔ)言庫(kù)函數(shù)
printf() - C語(yǔ)言庫(kù)函數(shù)
sin() - C函數(shù)
freopen() - C語(yǔ)言庫(kù)函數(shù)
NULL - C函數(shù)
mktime() - C語(yǔ)言庫(kù)函數(shù)
floor() - C函數(shù)
log() - C函數(shù)
rewind() - C語(yǔ)言庫(kù)函數(shù)
memcpy() - C語(yǔ)言庫(kù)函數(shù)
remove() - C語(yǔ)言庫(kù)函數(shù)
localtime() - C語(yǔ)言庫(kù)函數(shù)
strcoll() - C語(yǔ)言庫(kù)函數(shù)
fgets() - C語(yǔ)言庫(kù)函數(shù)
errno - C語(yǔ)言宏
<stdlib.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
labs() - C語(yǔ)言庫(kù)函數(shù)
putchar() - C語(yǔ)言庫(kù)函數(shù)
wcstombs() - C語(yǔ)言庫(kù)函數(shù)
fclose() - C庫(kù)函數(shù)
system() - C語(yǔ)言庫(kù)函數(shù)
strncmp() - C語(yǔ)言庫(kù)函數(shù)
va_end() - C函數(shù)
setlocale() - C函數(shù)
strpbrk() - C語(yǔ)言庫(kù)函數(shù)
acos() - C函數(shù)
fabs() - C函數(shù)
asctime() - C語(yǔ)言庫(kù)函數(shù)
offsetof() - C函數(shù)
cos() - C函數(shù)
atoi() - C語(yǔ)言庫(kù)函數(shù)
strftime() - C語(yǔ)言庫(kù)函數(shù)
va_arg() - C函數(shù)
strstr() - C語(yǔ)言庫(kù)函數(shù)
<errno.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
memchr() - C語(yǔ)言庫(kù)函數(shù)
fopen() - C語(yǔ)言庫(kù)函數(shù)
va_start() - C函數(shù)
fprintf() - C語(yǔ)言庫(kù)函數(shù)
strrchr() - C語(yǔ)言庫(kù)函數(shù)
<time.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
isgraph() - C函數(shù)
srand() - C語(yǔ)言庫(kù)函數(shù)
isprint() - C函數(shù)
fputs() - C語(yǔ)言庫(kù)函數(shù)
sscanf() - C語(yǔ)言庫(kù)函數(shù)
getc() - C語(yǔ)言庫(kù)函數(shù)
<stdarg.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
rename() - C語(yǔ)言庫(kù)函數(shù)
rand() - C語(yǔ)言庫(kù)函數(shù)
strspn() - C語(yǔ)言庫(kù)函數(shù)
frexp() - C函數(shù)
bsearch() - C語(yǔ)言庫(kù)函數(shù)
islower() - C函數(shù)
fwrite() - C語(yǔ)言庫(kù)函數(shù)
ispunct() - C函數(shù)
vsprintf() - C語(yǔ)言庫(kù)函數(shù)
strcspn() - C語(yǔ)言庫(kù)函數(shù)
fgetpos() - C庫(kù)函數(shù)
getchar() - C語(yǔ)言庫(kù)函數(shù)
tmpfile() - C語(yǔ)言庫(kù)函數(shù)
mbtowc() - C語(yǔ)言庫(kù)函數(shù)
sprintf() - C語(yǔ)言庫(kù)函數(shù)
ftell() - C語(yǔ)言庫(kù)函數(shù)
feof() - C庫(kù)函數(shù)
mblen() - C語(yǔ)言庫(kù)函數(shù)
clearerr() - C庫(kù)函數(shù)
modf() - C函數(shù)
strncat() - C語(yǔ)言庫(kù)函數(shù)
isspace() - C函數(shù)
ctime() - C語(yǔ)言庫(kù)函數(shù)
tmpnam() - C語(yǔ)言庫(kù)函數(shù)
isupper() - C函數(shù)
atol() - C語(yǔ)言庫(kù)函數(shù)
gets() - C語(yǔ)言庫(kù)函數(shù)
<setjmp.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
perror() - C語(yǔ)言庫(kù)函數(shù)
exit() - C語(yǔ)言庫(kù)函數(shù)
memmove() - C語(yǔ)言庫(kù)函數(shù)
isalpha() - C函數(shù)
fsetpos() - C語(yǔ)言庫(kù)函數(shù)
fmod() - C函數(shù)
<float.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
strtok() - C語(yǔ)言庫(kù)函數(shù)
wctomb() - C語(yǔ)言庫(kù)函數(shù)
strcat() - C語(yǔ)言庫(kù)函數(shù)
atof() - C語(yǔ)言庫(kù)函數(shù)
strchr() - C語(yǔ)言庫(kù)函數(shù)
<locale.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
signal() - C函數(shù)
ungetc() - C語(yǔ)言庫(kù)函數(shù)
ferror() - C庫(kù)函數(shù)
C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
strtoul() - C語(yǔ)言庫(kù)函數(shù)
fseek() - C語(yǔ)言庫(kù)函數(shù)
fscanf() - C語(yǔ)言庫(kù)函數(shù)
mbstowcs() - C語(yǔ)言庫(kù)函數(shù)
longjmp() - C函數(shù)
localeconv() - C函數(shù)
raise() - C函數(shù)
ceil() - C函數(shù)
<string.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
free() - C語(yǔ)言庫(kù)函數(shù)
setvbuf() - C語(yǔ)言庫(kù)函數(shù)
atan() - C函數(shù)
C函數(shù)庫(kù)宏 assert()
<stdio.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
fread() - C語(yǔ)言庫(kù)函數(shù)
vfprintf() - C語(yǔ)言庫(kù)函數(shù)
isxdigit() - C函數(shù)
toupper() - C函數(shù)
<ctype.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
setjmp() - C函數(shù)
ldexp() - C函數(shù)
EDOM - C語(yǔ)言宏
strlen() - C語(yǔ)言庫(kù)函數(shù)
tolower() - C函數(shù)
clock() - C語(yǔ)言庫(kù)函數(shù)
fflush() - C庫(kù)函數(shù)
fgetc() - C語(yǔ)言庫(kù)函數(shù)
<stddef.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
div() - C語(yǔ)言庫(kù)函數(shù)
<math.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
isalnum() - C函數(shù)
memset() - C語(yǔ)言庫(kù)函數(shù)
calloc() - C語(yǔ)言庫(kù)函數(shù)
vprintf() - C語(yǔ)言庫(kù)函數(shù)
sqrt() - C函數(shù)
<assert.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)
time() C語(yǔ)言
atexit() - C語(yǔ)言庫(kù)函數(shù)
memcmp() - C語(yǔ)言庫(kù)函數(shù)
setbuf() - C語(yǔ)言庫(kù)函數(shù)
iscntrl() - C函數(shù)
abs() - C語(yǔ)言庫(kù)函數(shù)
abort() - C語(yǔ)言庫(kù)函數(shù)
exp() - C函數(shù)
realloc() - C語(yǔ)言庫(kù)函數(shù)
puts() - C語(yǔ)言庫(kù)函數(shù)
scanf() - C語(yǔ)言庫(kù)函數(shù)
malloc() - C語(yǔ)言庫(kù)函數(shù)
strerror() - C語(yǔ)言庫(kù)函數(shù)
strtol() - C語(yǔ)言庫(kù)函數(shù)
ERANGE - C語(yǔ)言宏
sinh() - C函數(shù)
atan2() - C函數(shù)
putc() - C語(yǔ)言庫(kù)函數(shù)
asin() - C函數(shù)
strcpy() - C語(yǔ)言庫(kù)函數(shù)
fputc() - C語(yǔ)言庫(kù)函數(shù)
getenv() - C語(yǔ)言庫(kù)函數(shù)
pow() - C函數(shù)
tanh() - C函數(shù)
gmtime() - C語(yǔ)言庫(kù)函數(shù)
strtod() - C語(yǔ)言庫(kù)函數(shù)
log10() - C函數(shù)
strcmp() - C語(yǔ)言庫(kù)函數(shù)
<signal.h> - C語(yǔ)言標(biāo)準(zhǔn)庫(kù)

signal() - C函數(shù)

C庫(kù)函數(shù) void (*signal(int sig, void (*func)(int)))(int)設(shè)置一個(gè)函數(shù)來(lái)處理信號(hào),即信號(hào)數(shù)量sig的信號(hào)處理程序 。

聲明

以下是signal()函數(shù)的聲明。

void (*signal(int sig, void (*func)(int)))(int)

參數(shù)

  • sig -- 這是信號(hào)的處理功能被設(shè)置的號(hào)碼。以下是幾個(gè)重要的標(biāo)準(zhǔn)信號(hào)的數(shù)字:

macro signal
SIGABRT (Signal Abort) Abnormal termination, such as is initiated by the function.
SIGFPE (Signal Floating-Yiibai Exception) Erroneous arithmetic operation, such as zero divide or an operation resulting in overflow (not necessarily with a floating-yiibai operation).
SIGILL (Signal Illegal Instruction) Invalid function image, such as an illegal instruction. This is generally due to a corruption in the code or to an attempt to execute data.
SIGINT (Signal Interrupt) Interactive attention signal. Generally generated by the application user.
SIGSEGV (Signal Segmentation Violation) Invalid access to storage: When a program tries to read or write outside the memory it is allocated for it.
SIGTERM (Signal Terminate) Termination request sent to program.
  • func -- 這是一個(gè)指向函數(shù)的指針。這可以是由程序員或一個(gè)以下預(yù)定義的函數(shù)的定義的函數(shù):

SIG_DFL 默認(rèn)處理:對(duì)于某一特定信號(hào),該信號(hào)處理的默認(rèn)操作。
SIG_IGN 忽略信號(hào):信號(hào)被忽略。

返回值

這個(gè)函數(shù)返回前一個(gè)信號(hào)處理程序或錯(cuò)誤SIG_ERR的值。

例子

下面的例子顯示了signal()函數(shù)的用法。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>

void sighandler(int);

int main()
{
   signal(SIGINT, sighandler);

   while(1) 
   {
      printf("Going to sleep for a second...
");
      sleep(1);
   }

   return(0);
}

void sighandler(int signum)
{
   printf("Caught signal %d, coming out...
", signum);
   exit(1);
}

讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果,程序?qū)o(wú)限循環(huán)中去。跳出程序使用Ctrl + C鍵。

Going to sleep for a second...
Going to sleep for a second...
Going to sleep for a second...
Going to sleep for a second...
Going to sleep for a second...
Caught signal 2, coming out...