gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:45:05 25 4
gpt4 key购买 nike

我有一个在 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);

关于c - Linux/C 如何正确结束命令行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20623764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com