我有一个在Linux命令行上运行的程序。它分配一些内存,打开一些文件描述符,等等。我想要一个很好的方式来让用户输入停止程序,同时仍然进行清理并且不中断某些文件的读/写。什么是正确的方法来做到这一点?到目前为止,我一直在使用CTRL + C来停止该程序,但是我觉得这样做并没有正确地进行清理,并且这并不能让我的程序有机会做一个写入日志文件来指示它正在关闭。 目前,我这样做: - 设置标准输入非阻塞(使程序不会挂起等待输入)Linux/C如何正确结束命令行程序
while(loop_variable != 'q') {
loop_variable = getchar();
...
}
有什么建议?
Catch SIGINT,当用户输入时发送^ C –
它“感觉”你的程序没有做什么清理?在终止一个进程后,内核会清理所有的东西给你。 –
或者只是让用户输入^ D,以便getchar返回EOF。 –