我正在用 C 编写一个程序,并且正在创建几个使用 POSIX 共享内存的子进程。现在我正在尝试处理程序被 SIGINT 等信号中断的情况。我知道,我需要安装信号函数,由于代码的不一致,直接在信号处理程序中释放资源是不好的,所以只需要切换布尔标志。同时我的主要代码是循环直到标志被切换。
所以它是这样的:
bool signal_interrupt = false;
void sig_handler(int sig_num)
{
signal_interrupt = true;
}
int main(void)
{
while (!signal_interrupt)
{
/* code, arguments processing, functions calling...*/
signal_interrupt = true;
}
}
我的问题是我不知道如何在程序的某些功能中释放资源。该函数的代码是否应该与主函数中所示的循环相同?程序如何对信号中断做出反应?它从当前函数返回到主函数,如果找到信号函数,它的处理程序会被调用吗?感谢您的任何建议,我真的很想了解这一点。