ssize_t read(int fd, void *buf, size_t count);
從檔案描述符fd中讀取count個位元組的資料放入buf的緩衝區中。
返回值:成功返回讀取到的位元組數;count為0,read()返回0;
eintr 在讀取到資料以前呼叫被訊號所中斷.
eagain 使用 o_nonblock 標誌指定了非阻塞式輸入輸出,但當前沒有資料可讀.
eio 輸入輸出錯誤.可能是正處於後台程序組程序試圖讀取其控制終端,但讀操作無效,或者被訊號sigttin所阻塞,或者其程序組是孤兒程序組.也可能執行的是讀磁碟或者磁帶機這樣的底層輸入輸出錯誤.
eisdir fd 指向乙個目錄.
ebadf fd 不是乙個合法的檔案描述符,或者不是為讀操作而開啟.
einval fd 所連線的物件不可讀.
efault buf 超出使用者可訪問的位址空間.
read 系統呼叫為什麼返回 int
read 是作業系統提供的乙個系統呼叫。該呼叫讀取流中的乙個位元組,返回乙個 int 這裡可以一 竟。早期的時候,作業系統設計者認為位元組大於等於0,故使用 1 作為流結尾標誌符。而且定義了乙個位元組就是乙個 byte,在記憶體中使用八位表示。這樣,乙個 byte 就只能表示0到127對應的編碼,顯...
Redis在高併發下常見的錯誤場景
第一種,看看自己是否已經入坑了。判斷redis快取是否有資料 if jedis.exists testlocklistv 1 else system.out.println jedis.get testlocklistv 1 快取有資料直接返回快取資料 很多同學都是判斷是否存在相同的key,如果不存...
從 read 看系統呼叫的耗時
1 fread和read有何不同?先看兩段 兩個檔案的功能完全一樣,開啟同乙個名為test.file的檔案,並逐字節地讀取整個檔案。將它們編譯後得到的可執行程式fread和read分別在同一臺pc linux系統 上執行,得到的如果如下 發現沒有?fread與read的耗時相差數十倍之多!可見啊 r...