编程时遇到一个问题,signal函数无法传递额外参数,因此可以使用外部变量,这样就可以在signal内部使用额外参数了。
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
//假设x是某结构体指针
char *x;
void sighandler(int);
int main(void)
{
x = malloc(128);
signal(SIGINT, sighandler);
while (1)
{
sleep(1);
}
return 0;
}
void sighandler(int signum)
{
puts("free x");
free(x);
exit(1);
}