檔案描述符可以是0嗎?

2021-03-31 08:56:59 字數 585 閱讀 7270

初接觸

unix

的人都會在教材中得到這樣的資訊:檔案描述符0、

1和

2分別代表

stdin

、stdout

和stderr

。所以,在我們自己的程式中往往都會避開這幾個「標準」的描述符。對於網路的操作,一般在

connect

(或accept

)後都會判斷

socket

描述符是否大於

0來決定網路連線是否建立。

問題偏偏就出在這裡。 乙個

socketserver

程式,accept

客戶端連線成功後建立一新的執行緒,將

accept

的返回值當作該執行緒的引數。在該執行緒中和客戶端互動,執行所需的操作。

在客戶端執行連線操作後,發現連線頻頻被

server

斷開,百思不解其意。

經過除錯,方才發現在accept執行成功後返回值竟然會是0。

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

作業系統:sunos 5.8編譯器: sunworkspace pro4.0 cc

mysql 檔案描述符 檔案描述符

toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...

檔案描述符

檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...

檔案描述符

作業系統程序表中存放各個檔案進行檔案描述 核心 kernel 利用檔案描述符 file descriptor 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。目錄檔案描述符概述 如何建立檔案描述符 使用的好處 缺點...