有没有办法让两个函数共享一个变量而不使其成为全局变量并且不能传递它?或者有没有办法在使用时将变量传递给函数signal()
?
具体来说,我有一个 main() 打开文件并对其进行处理并保持打开一段时间。有一个小函数在fd
处理完文件后接受(和其他一些信息)main() 调用。
我现在正试图通过捕捉致命信号并在需要时处理事情来使事情变得更加强大。尽管我无法弄清楚如何在不使fd
所有其他需要的变量全局化的情况下做到这一点。我宁愿避免的事情。
(void)signal(SIGINT, die);
死
static void die(int sig)
{
endTrip(fd, &tripID); //Quickly writes a footer and fcloses
exit(sig);
}
有没有比让一切都全球化更好的解决方案?
编辑
这样的事情可能吗
static void die(int sig, FILE *fd)
{
const FILE *local_fd;
if(sig == NULL)
{local_fd = fd;}
else
{
endTrip(local_fd, &tripID); //Quickly writes a footer and fcloses
exit(sig);
}
}
main() {
...
// When i open new file let die know.
die(NULL, fd);
...
}