変数をグローバルにせず、また渡すことができないように、2 つの関数で変数を共有する方法はありますか? または、使用時に関数に変数を渡す方法はあり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);
...
}