簡體   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