2012-03-07 184 views
0

我有客戶端 - 服務器應用程序。服務器是C. 服務器有這樣的結構:
在C中打開文件描述符

int main (...) { 
FILE * fp; 
fp = fopen("serverLog.log","w"); 


//init variables 
//bind server 
//listen server on port 
    while(1) { 
    //some code 
    //accept 
    //some code 
    int check = pthread_create(&thread, NULL, handle_client,&ctx); 

    } 
fclose(fp); 
return EXIT_SUCCSESS; 
} 

我運行服務器,並使用CTRL + C關閉服務器。 filedescriptor fd會發生什麼?我想,它保持開放。如果是的話,我該怎麼做? Thx

+1

與此問題類似:http://stackoverflow.com/questions/8175827/what-happens-if-i-dont-call-fclose-in-ac-program - 如果你退出程序,它的資源(內存,文件描述符)應該被操作系統回收。 – birryree 2012-03-07 20:53:51

回答

5

不,它將被操作系統關閉。當你的進程退出時(無論乾淨還是強制)內核都會清除所有懸掛的句柄。

相關問題