文件描述符可以是0嗎?

初接觸UNIX的人都會在教材中得到這樣的信息:文件描述符012分別代表stdinstdoutstderr。所以,在我們自己的程序中往往都會避開這幾個“標準”的描述符。對於網絡的操作,一般在connect(或accept)後都會判斷Socket描述符是否大於0來決定網絡連接是否建立。

問題偏偏就出在這裏。

一個SocketServer程序,accept客戶端連接成功後創建一新的線程,將accept的返回值當作該線程的參數。在該線程中和客戶端交互,執行所需的操作。

在客戶端執行連接操作後,發現連接頻頻被Server斷開,百思不解其意。

經過調試,方纔發現在accept執行成功後返回值竟然會是0。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

奇怪之餘,卻又無可奈何,修改Server端程序後問題解決。

 

操作系統:SunOS 5.8 編譯器: SUNWorkspace Pro4.0 CC

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章