[英]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.