我有一個在Linux命令行上運行的程序。它分配一些內存,打開一些文件描述符,等等。我想要一個很好的方式來讓用戶輸入停止程序,同時仍然進行清理並且不中斷某些文件的讀/寫。什麼是正確的方法來做到這一點?到目前爲止,我一直在使用CTRL + C來停止該程序,但是我覺得這樣做並沒有正確地進行清理,並且這並不能讓我的程序有機會做一個寫入日誌文件來指示它正在關閉。 目前,我這樣做: - 設置標準輸入非阻塞(使程序不會掛起等待輸入)Linux/C如何正確結束命令行程序
while(loop_variable != 'q') {
loop_variable = getchar();
...
}
有什麼建議?
Catch SIGINT,當用戶輸入時發送^ C –
它「感覺」你的程序沒有做什麼清理?在終止一個進程後,內核會清理所有的東西給你。 –
或者只是讓用戶輸入^ D,以便getchar返回EOF。 –