我讀過一個手冊頁,當exit()
被調用時,所有的流自動刷新和關閉。起初,我對這是如何完成以及它是否真的可靠,但看到我再也找不到我會接受它的作品 - 我們會看看是否有什麼事情會爆炸的問題持懷疑態度。無論如何,如果這種流關閉行爲出現在exit()
中,這種行爲也存在於SIGINT
的默認處理程序中(中斷信號通常由Ctrl + C觸發)?或者,是否有必要這樣做:C語言開放流自動刷新並關閉SIGINT?
#include <signal.h>
#include <stdlib.h>
void onInterrupt(int dummy) { exit(0); }
int main() {
signal(SIGINT, onInterrupt);
FILE *file = fopen("file", "a");
for (;;) { fprintf(file, "bleh"); } }
要得到file
要正確關閉嗎?或者可以安全省略signal(SIG...
和void onInterrupt(...
行嗎?
請限制對C,C99和POSIX的回覆,因爲我沒有使用GNU libc。謝謝。
它絕對封閉。所有文件描述符在流程結束時被釋放。我不確定他們是否被刷新。 – 2010-01-11 19:36:25