標準i/o:標準i/o是ansi c建立的乙個標準i/o模型,是乙個標準函式包和stdio.h標頭檔案中的定義,具有一定的可移植性。標準i/o庫處理很多細節。例如快取分配,以優化長度執行i/o等。標準的i/o提供了三種型別的快取。
(1)全快取:當填滿標準i/o快取後才進行實際的i/o操作。
(2)行快取:當輸入或輸出中遇到新行符時,標準i/o庫執行i/o操作。
(3)不帶快取:stderr就是了。
我們使用c庫函式的printf等一系列的c標準庫函式,而這些函式則會呼叫我們系統應用層的api函式,然後應用層api會再去呼叫核心層的api函式,最後把我們需要列印的值輸出到我們的顯示裝置上,如圖這樣的情況。
硬碟效率低:毫秒級別
記憶體:納秒級別
將內容儲存在緩衝區,降低硬碟操作
因為硬碟的效率低,不能讀寫乙個位元組都開關一次硬碟,所以應用io快取區當重新整理緩衝區或者快取區滿的時候我們一次性存進硬碟,減少硬碟的操作。
例子:如果我們需要敲乙個"hello world" 沒有緩衝區的話,我們打乙個字就會開關一次硬碟
擁有了緩衝區,就能打完這段字,我們重新整理緩衝區等方法來,一次性寫入硬碟
1.重新整理緩衝區:fflush
2.緩衝區已滿自動重新整理
3.正常關閉檔案
1)fclose
2) exit
exit()是直接將整個程式終止
return 則是隱性的呼叫exit
fd:檔案描述符 ,int型別索引
在系統層,是int型別的索引
f_pos 指讀寫指標的位置
file* 在lib庫裡面通過fd來訪問檔案
大小0~1023裡面放著檔案描述符,裡面乙個數字標識著每乙個檔案
表裡的前3為 預設前三位
0:標準輸入
1:標準輸出
2:標準錯誤
1.功能 來說能做的事情多,open/write/read等函式直接呼叫
2.簡介意義 學習os,理解os
linux系統內不適應檔名,統一使用fd檔案識別符號
頭函式:
#include
#include
#include
使用方法:
int open (const char * pathname,int flags,mode_t mode);
引數一:pathname 檔名需要開啟的檔案位址
引數二: flags 必選項 flags三個許可權為 唯讀,只寫,讀寫
引數三: mode 也表示許可權 mode_t mode (這個型別其實也是無符號整型差不多)
返回值:返回乙個新的檔案描述符(int)表示檔案在檔案描述表裡面的位置
頭函式:#include
ssize_t write(int fd, char buf,strlen(len))
ssize_t也是int型別把 前面多乙個s表示帶符號的意思 可以說是int型別換個名字吧
引數一:open函式開啟檔案後返回的檔案描述符
引數二:就是你要寫入什麼東西,什麼字串,寫入到那個檔案
引數三:這個字串的長度是多少 strlen讀到\0就結束了 所以運用要小心
返回值為寫入位元組的個數
頭函式:#include
ssize_t write(int fd, char buf,sizeof(len))
引數一:和write函式一樣 是fd是檔案描述符,就是告訴我們需要去讀檔案描述表裡面的哪乙個檔案
引數二:就是把讀到的內容,放到這個字元陣列裡面
引數三:讀多少個字元內容,到這個字元陣列裡面
返回值:讀取的字元個數是多少
第三階段知識回顧(4)
int msgget key t key int msgfls 建立訊息佇列 引數1 key t key 暗號鍵值 引數2 建立訊息佇列許可權 ipc creat 2,int msgsnd int msgid,const void msg ptr,size t msg sz,int msg 往訊息佇...
JSP 第三階段
又是元氣滿滿的一天,啦啦啦.開始正文 知識點一 out 物件 jsp的內建物件 特點 無需例項化即可使用 作用 實現資料的輸出顯示 方法 print 向頁面輸出顯示。println 向頁面輸出顯示,在原始碼裡會換行。注 頁面顯示的不會換行 知識點二 面試常問點 九大內建物件 jsp jsp已經準備好...
第三階段返程
早晨6點20起床,這是這些天來起的最早的一次,在鬧鈴響之前就醒了,證明只要心有所想是完全可以做到的,這是心理暗示的強大作用,以後要多用於其他方面。是發票改革的原因嗎?前幾次都是離店在前台直接結算開發票,現在改到財務部,週六日還不上班,給住店帶來不少麻煩,怎麼越改越不人性化呢?隨行的同事買的蘋果,每人...