繁体   English   中英

Linux / C如何正确结束命令行程序

[英]Linux/C How to properly end command line program

我有一个在Linux命令行上运行的程序。 它分配一些内存,打开一些文件描述符,等等。我希望有一个好的方法,能够让用户输入在仍然进行清理的同时停止程序,并且不中断某些文件的读/写。 正确的方法是什么? 到目前为止,我一直在使用CTRL + C来停止程序,但是我觉得那不能正确地进行清理,并且这也没有给我的程序写日志文件的机会,表明它已关闭。 目前,我正在这样做:-将STDIN设置为非阻塞(这样程序就不会挂起等待输入)

while(loop_variable != 'q') {
loop_variable = getchar();
...
}

有什么建议么?

威廉·珀塞尔William Pursell)评论说,您可以抓住SIGINT。

当捕获SIGINT时,这是实现清除的方法。

首先,定义清理功能。 在此功能中,您需要进行所有房屋清洁。

void cleanup(int signum) {
    ... //all house cleaning steps like deleting files, closing file descriptors
}

在main()函数中,您可以调用signal()并传递函数清除的名称和要捕获的关联信号。 您可以捕获适合用户操作的多种信号。

signal(SIGINT, cleanup);
signal(SIGQUIT, cleanup);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM