error: invalid conversion from ‘void (*)()’ to ‘void (*)(int)’
error: initializing argument 2 of ‘void (* signal(int, void (*)(int)))(int)’
SIG_ERR它表示一个函数指针,如果不出错的话,signal()会返回以前的信号处理函数的地址。
你的SIGUSER1定义了吗?默认的话,系统没有这一个信号
SIG_ERR是这样定义的
#define SIG_ERR (void (*) () ) -1追问
你的SIGUSER1定义了吗?默认的话,系统没有这一个信号
SIG_ERR是这样定义的
#define SIG_ERR (void (*) () ) -1追问
SIGUSR1貌似没定义,应该怎么定义下啊
追答#define SIGUSER1 100
就是宏定义 定义成100
还是有错,是不是因为signal(SIGUSR1,sig_usr)里的参数需要强转换啊
sig_usr() 的定义:
static void sig_usr()
{
int spid = getpid();
printf("Process %d receives signal.\n",spid);
}
这个函数是有参数的static void sig_usr(int)
追问这个不应该是自己定义的函数吗
追答是自己定义的,但是要按照系统规定的来啊,signal(SIGUSR1,sig_usr),signal函数第二个参数是信号处理程序的地址,这个信号处理函数的参数是int型的,必须这样,signal的函数返回值是以前的信号处理函数地址。
温馨提示:答案为网友推荐,仅供参考