1. 程式人生 > 其它 >2021-2022-1-diocs-stat命令的實現-mystat

2021-2022-1-diocs-stat命令的實現-mystat

stat命令的實現-mystat

stat(1)學習

man 1 stat檢視stat幫助文件

觀察SEE ALSO有關內容,猜測stat使用系統呼叫

功能
stat命令主要用於顯示檔案或檔案系統的詳細資訊,相比ls命令而言,stat還可以看到裝置號,環境等資訊。

格式
stat [option] file or dir

常用選項

其中-c選項可使用如下引數

%a     八進位制表示的訪問許可權
%A     可讀格式表示的訪問許可權
%b     分配的塊數(參見 %B)
%B     %b 引數顯示的每個塊的位元組數
%d     十進位制表示的裝置號
%D     十六進位制表示的裝置號
%f     十六進位制表示的 Raw 模式
%F     檔案型別
%g     屬主的組 ID
%G     屬主的組名
%h     硬連線數
%i     Inode 號
%n     檔名
%N     如果是符號連結,顯示器所連結的檔名
%o     I/O 塊大小
%s     全部佔用的位元組大小
%t     十六進位制的主裝置號
%T     十六進位制的副裝置號
%u     屬主的使用者 ID
%U     屬主的使用者名稱
%x     最後訪問時間
%X     最後訪問時間,自 Epoch 開始的秒數
%y     最後修改時間
%Y     最後修改時間,自 Epoch 開始的秒數
%z     最後改變時間
%Z     最後改變時間,自 Epoch 開始的秒數

針對檔案系統還有如下格式選項:

%a     普通使用者可用的塊數
%b     檔案系統的全部資料塊數
%c     檔案系統的全部檔案節點數
%d     檔案系統的可用檔案節點數
%f     檔案系統的可用節點數
%C     SELinux 的安全上下文
%i     十六進位制表示的檔案系統 ID
%l     檔名的最大長度
%n     檔案系統的檔名
%s     塊大小(用於更快的傳輸)
%S     基本塊大小(用於塊計數)
%t     十六進位制表示的檔案系統型別
%T     可讀格式表示的檔案系統型別

man -k和grep -r查詢stat有關函式

man -k stat | grep 2在man手冊中第二節查詢包含的內容

使用man -k stat | grep -nr include指令

使用man 2 stat查詢stat函式呼叫有關內容

找到包含stat有關的標頭檔案

#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h>

結構體

返回值

SEE ALSO

stat虛擬碼

判斷輸入中是否包含檔案引數,如果有則繼續,沒有則提示使用者輸入錯誤
宣告結構體,呼叫函式stat();
列印輸出

{
  節點ino;
  檔案型別mode;
  檔案的連線數nlink
  使用者ID uid和組ID gid;
  塊大小blksize;
  位元組數size;
  塊數目blocks;
  三個時間atime、mtime和ctime
}

產品程式碼 mystate.c

程式碼已上傳至碼雲我的倉庫

測試程式碼

建立test.txt測試檔案,先用stat進行測試

再使用mystat,二者對比