18-io_ctags配置

I/O

man 1 命令

man 2 系統調用 內核給用戶留出的接口

man 3 庫 以二進制形式存在的函數集合

文件類型 :
  • -普通文件 ( 二進制、ASCII )
  • p 管道
  • d 目錄
  • s 套接字
  • l 鏈接
  • c 字符設備
  • b 塊設備
Input:
  • 輸入:數據由內核空間流向用戶空間
流:
  • 用來表示數據的方向
  • 標準IO中 系統預定義的3個流:
    • stdin標準輸入
    • stdout標準輸出
    • stderr標準錯誤
標準IO緩衝區:
  • 全緩存:操作文件,大小4k,刷新fflush
  • 行緩存:操作終端(stdin、stdout),大小1024字節,遇到\n刷新
  • 不緩存:stderr
* FILE * 流指針 是一個結構體,用來描述文件
* 文件指針:一個long型表示文件的位置
* perror();打印最後一次系統錯誤信息
標準IO操作文件的方式:
  • feof用來判斷是否到達文件末尾,到達文件末尾返回非零值。

函數:

fopen :
  • fopen(path,mode);成功返回FILE *,錯誤返回NULL並且設置errno。
  • mode:
    • r:只讀,文件指針指向文件開頭,如果文件不存在則報錯。
    • r+:讀寫,文件指針指向文件開頭,如果文件不存在則報錯。
    • w:清空,只寫,文件不存在則創建,文件指針指向文件開頭
    • a:追加,只寫到末尾,文件不存在則創建,文件指針指向文件末尾。
    • a+:追加,讀寫,寫到末尾,文件不存在則創建,初始時讀文件指針指向開頭。
    • 操作二進制文件:rb,rb+,ab+
fclose :
  • 關閉流
  • fclose(FILE *);
  • 不要多次關閉同一個流
fprintf :
  • 同printf
  • (FILE * , 後同printf );
fseek :
  • 通過fseek對文件指針進行操作
  • fseek(FILE *,offset,whence);
  • offset:+表示向後偏,-值表示向前偏
  • whence:
    • SEEK_SET文件頭
    • SEEK_CUR當前位置
    • SEEK_END文件末尾
  • ftell告知當前指針位置
  • rewind偏移指針到頭。
按字符
  • fgetc/getc
  • fputc/putc
按行
  • fgets(char *s,size,FILE *) ; 讀取size-1個字符存放到s裏,最後一個位置存放\0 , fgets 遇到 EOF 或者 \n 會停止。
  • fputs(char *s,FILE *) ;
按塊
  • fread(void *,size,nmemb,FILE *) ; 返回值爲成功讀取的對象的個數,操作ASCII碼文件是儘量使用char *。注意返回值對fwrite操作的影響。
  • fwrite同上。
* 不建議使用的函數gets
* 操作文件時,遇到全緩存要注意使用fflush刷新。

追蹤代碼:

  • ctags追蹤代碼 vim -t 變量/類型
  • 選擇合適的代碼之後繼續追蹤,光標移動,ctrl+]
  • vim -t需要安裝ctags
    • 解壓內核 tar -vxf 壓縮文件
    • 切換到內核目錄下ctags -R 生成tags文件
    • 配置~/.vimrc 加入一行 set tags+=tags路徑
發佈了38 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章