linux signal异常-signal不是一个函数咋回事

linux signal错误---signal不是一个函数怎么回事
#include<signal.h>
#include<stdlib.h>
#include<stdio.h>
static void sig_quit(int sig);
int main(){
sigset_t newmask,oldmask,pendmask;
if(signal(SIGQUIT,sig_quit)==SIG_ERR)
{printf("can't catch sigquit\n");exit(0);}

sigemptyset(&newmask);
sigaddset(&newmask,SIGQUIT);
if(sigprocmask(SIG_BLOCK,&newmask,&oldmask)<0)
{printf("error\n");exit(0);}
sleep(7);
if(sigpending(&pendmask)<0) {printf("error\n");exit(0);}

if(sigismember(&pendmask,SIGQUIT)<0) {printf("pending sigquit\n");}

if(sigprocmask(SIG_SETMASK,&oldmask,NULL)<0){printf("error\n");exit(0);}
printf("this is text\n");
sleep(5);
exit(0);
return 0;
}

static void sig_quit(int signal)
{
  printf("catch sigquit\n");
  if(signal(SIGQUIT,SIG_DFL)==SIG_ERR)
{exit(0);}
}


出现sig_quit函数中的signal不是一个函数怎么回事

------解决方案--------------------
man 说 signal 可能不用了 。使用sigaction替代。
------解决方案--------------------
sig_quit参数的名字覆盖了signal函数的名字