2014-03-26 31 views
2

如何確保當前行將被完全寫入到文件Ctrl+C break?大部分時間我都會收到部分最後一行。我知道這很正常,但我該如何處理呢?C:fprintf用Ctrl C中斷C

謝謝

+2

每個OS處理Ctrl-C鍵的方式不同。什麼操作系統/構建系統? – IdeaHat

+3

別忘了'fflush()'? – chux

+2

您可以使用信號處理程序捕捉「Ctrl + C」......您可以直接寫入內存映射文件,而不是使用「fprintf」來加快寫入速度......您可以在每次之後「刷新」stdout緩衝區編寫以確保沒有未決活動。你要做什麼?你在做什麼系統?這有什麼用途? – Mike

回答

1

如果運行Linux,你可以趕上SIGINT信號,您的所有數據刷新到信號處理程序文件。通常,Linux中的所有進程都會收到帶默認信號掩碼的SIGINT。你所要做的就是編寫信號處理函數,然後使用sigaction()系統調用。

http://man7.org/linux/man-pages/man2/sigaction.2.html