linux下高階程式設計的特點;涉及到核心向使用者空間提供的介面(函式)
介面的功能 引數 返回值
檔案io
標頭檔案:unistd.h fcntl.h
是從使用者空間角度考慮的輸入輸出
從核心讀資料或從檔案中讀資料叫 輸入 read函式
寫資料到核心或寫資料到檔案中叫 輸出 write 函式
開啟或建立乙個檔案 open函式
關閉乙個檔案 close函式
open(char*,flag,mode)
char* 要開啟的檔名和路徑 一般用命令列引數傳入(main引數)
標準io中有乙個庫快取
使用者有使用者快取,核心有核心快取,用write函式是直接從使用者快取到核心快取,用printf要先送到庫快取再送到核心快取 printf遇到\n時才會將庫快取內容寫到核心快取中
庫快取分為全快取行快取和無快取三種,行快取碰到\n寫到核心,全快取為寫滿快取再呼叫系統呼叫函式寫到核心,無快取只要呼叫就會立即寫到核心
行快取讀:fgets、gets、printf、fprintf、sprintf
寫:fputs、puts、scanf
全快取讀:fread
寫:fwrite
fopen和fclosefputs和fgets
charfgets(chars,int size,filestream)
引數一:快取,即都到**去
引數二:讀多少個位元組
第三個引數:從什麼地方讀
返回值成功為s(快取的位址),若在檔案尾端或出錯則為null
int fputs(const chars,filestream)
引數一:快取,即寫什麼內容
引數二:寫到**去(或者stdin標準輸入stdout標準輸出stderr標準出錯)
若成功則為非負值,出錯則為eof
fclose關閉乙個檔案,關閉時會重新整理快取資料,會把已有快取強制輸送出去
stderr為無快取的
fflush fseek rewind ftell
fflush會強制將庫快取送到核心中
fclose中包換fflush
fflush(filefp)
fseek()引數與lseek一樣但返回值不同
成功返回0 失敗返回 -11
rewind(filefp)用於設定流的檔案位置指示為檔案開頭,該函式呼叫成功無返回值
rewind(fp)等價於fessk(fp,0,seek_set)
ftell(filefp)
用於取當前檔案位置指標。呼叫成功則返回當前檔案指標位置,出錯則為-1l
行快取讀寫函式gets puts fprintf sprintf
chargets(chars)
int puts(const char*s)
返回值與fgets fputs相同
gets只能從標準輸入讀,不能指定長度,可能造成快取越界 gets不讀入新行符,fgets讀入新行符。
puts只能向標準輸出中寫。puts輸出時會新增乙個新行符(\n )
int fprintf(filestream,「字串格式」)
fprintf既可以向標準輸出(顯示屏)輸出,也可以向檔案內輸出
int sprintf(str)「字串格式「輸出內容到乙個字串中
## 乙個字元讀寫函式fgetc和fputc
**不是行快取
int fgetc(filefp)
將檔案中的乙個字元輸出到顯示器,成功返回輸出值,到檔案結尾時返回eof
int fputc(int c,filefp)
輸入乙個字元到檔案中。成功則返回輸入字元,出錯返回eof(實際就是-1)
feof、ferror、clearerr
int feof(file*stream)
功能:判斷是否已經到檔案結束
引數:檔案流指標
返回值:到檔案結束,返回非零,沒有返回0
注意,feof要先讀一次才能判斷,在用作判斷條件時前面應該先讀,否則會出現多讀一次情況
int ferror(filestream)
功能:判斷是否讀寫錯誤(判斷getc等函式是否返回eof)
引數:檔案流指標
返回:是讀寫錯誤返回非0不是返回0
void clearerr(filestream)
功能,清除流錯誤
引數:檔案流
fread、fwrite 全快取函式
size_t fread(voidptr,size_t seze ,size_t nmemb,filestream)
soze_t fwried(const voidptr,size_t size size_t nmemb.filestream)
引數一:快取位址
引數四:寫到那裡去/從**讀
引數二size:寫的內容中,每一單元所佔的位元組數
引數三:nmemb:寫的內容中,有多少個單元數
例如charbuf
引數二位1引數三為128
int buf
引數二為4 引數三為128
返回值,實際讀寫的單元數
標頭檔案opendir(只能開啟目錄)
mkdir 建立目錄
readdir 都目錄(讀取到的是目錄下的子檔案或者子檔案的資訊,不涉及內容,只包括檔名稱,型別等)
rewinddir 調整到開頭 調整指標位置
telldir 返回當前位置
seekdir 調整位置
closedir 關閉目錄
diropendir(const charpathname)
引數:開啟的目錄以及路徑
返回值:成功返回目錄流指標,出錯返回null
int mkdir(const char *path,mode-t mode)
path為欲建立的目錄檔案路徑
mode為該目錄的訪問許可權
返回值,成功返回0,否則返回-1
struct direntreaddir(dirrdr)
引數目錄流指標
返回值:成功則為struct dirent指標,若在目錄尾或出錯返回null
struct dirent定義在標頭檔案dirent.h中
此結構至少包換下列兩個成員:
struct dirent
{ino_t ino; inode號
char d_name[name_max+10;檔名]
void rewinddir(dir*dr)
引數:目錄流指標
重置讀取目錄的位置為開頭
long telldir(dir*dirp)
引數:目錄流指標
返回值:目錄流當前位置
void seekdir(dir*dr,long loc)
引數:目錄流指標和偏移量,
linux高階程式設計 系統呼叫I O函式
檔案描述符 檔案描述符是非負整數。開啟現存盤案或新建檔案時,系統 核心 會返回乙個檔案描述符。檔案描述符用來指定已開啟的檔案。在系統呼叫 檔案io 中,檔案描述符對檔案起到標識作用,如果要操作檔案,就是對檔案描述符的操作 乙個程式執行或者乙個程序開啟時,系統會自動建立三個檔案描述符 0 標準輸入 1...
Linux 高階Socket程式設計
基本套接字分為客戶機 伺服器和點對點模式。c s sever client 一般採用tcp b s browser server 一般採用udp 常用的資料結構有in addr 儲存ip位址 sockaddr in 表示internet協議位址結構 sockaddr 儲存主機ip位址和介面資訊 st...
linux系統高階命令高階 推薦
輸出重定向 覆蓋檔案內容 echo 123 test 把原來的內容覆蓋 echo 123 test 把原來的存在 並存 echo ken2 etc hostame 實現改名 2 錯誤的覆蓋輸出 echo 2 2 不覆蓋 一和二不用判斷都可以輸入到檔案中去 不覆蓋 輸入重定向 wc l etc pas...