我有一个小程序打开一个文件并对其执行一些操作。我订阅的文件关闭该程序终止如下:on_exit和CTRL + C
static
void exit_handler (int ev, void *arg)
{
fprintf(stderr, "bye %d\n", WEXITSTATUS(ev));
fclose((FILE *)arg);
}
int main (int argc, char *argv[])
{
FILE *out;
...
out = fopen(argv[1], "wt");
if (out == NULL) {
perror("Opening output file");
exit(EXIT_FAILURE);
}
on_exit(exit_handler, out);
...
}
尝试执行此我注意到,它工作正常只有当程序正常终止。如果是CTRL + C(SIGINT
)exit_handler
回调未执行。
这不是很奇怪吗?我应该将exit(EXIT_FAILURE)
呼叫与SIGTERM
的信号处理程序联系起来吗?这种情况下的最佳做法是什么?
请注意,在大多数TTY上,默认情况下,CTRL + C会将'SIGINT'发送到前台进程,而不是'SIGTERM'。 – 2016-03-22 18:30:02
@JonathonReinhart正确。我修好了,谢谢。 – Dacav 2016-03-26 06:33:22