模擬實現ls-l
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char* argv)
struct stat st;
int ret = stat(argv[1], &st);
if(ret == -1)
// 儲存檔案型別和訪問許可權
char perms[11] = ;
// 判斷檔案型別
switch(st.st_mode & s_ifmt)
// 判斷檔案的訪問許可權
// 檔案所有者
perms[1] = (st.st_mode & s_irusr) ? 'r' : '-';
perms[2] = (st.st_mode & s_iwusr) ? 'w' : '-';
perms[3] = (st.st_mode & s_ixusr) ? 'x' : '-';
// 檔案所屬組
perms[4] = (st.st_mode & s_irgrp) ? 'r' : '-';
perms[5] = (st.st_mode & s_iwgrp) ? 'w' : '-';
perms[6] = (st.st_mode & s_ixgrp) ? 'x' : '-';
// 其他人
perms[7] = (st.st_mode & s_iroth) ? 'r' : '-';
perms[8] = (st.st_mode & s_iwoth) ? 'w' : '-';
perms[9] = (st.st_mode & s_ixoth) ? 'x' : '-';
// 硬鏈結計數
int linknum = st.st_nlink;
// 檔案所有者
char* fileuser = getpwuid(st.st_uid)->pw_name;
// 檔案所屬組
char* filegrp = getgrgid(st.st_gid)->gr_name;
// 檔案大小
int filesize = (int)st.st_size;
// 修改時間
char* time = ctime(&st.st_mtime);
char mtime[512] = ;
strncpy(mtime, time, strlen(time)-1);
char buf[1024];
sprintf(buf, "%s %d %s %s %d %s %s", perms, linknum, fileuser, filegrp, filesize, mtime, argv[1]);
printf("%s\n", buf);
return
0;}
如圖所示: Linux 訊號 模擬實現sleep
1 產生訊號 產生訊號的3種方式 1 呼叫系統函式 kill raise abort 2 軟體異常行為 3 組合鍵 ctrl c ctrl d ctrl 等 處理訊號的3種方式 1 忽略。2 預設 很多情況下是終止 3 自定義 訊號捕捉 訊號在核心中的表示 1 遞達 執行訊號的處理動作稱為訊號遞達 ...
linux 模擬實現sleep函式
功能 將程序掛起一段時間 函式原型 include unsigned int sleep unsigned int seconds n秒 來舉乙個很簡單的栗子 執行以上 後,輸出結果如下 每隔一秒列印一次,這就是sleep函式的作用。那麼如何自己模擬實現sleep呢?先介紹一些我們會用到的函式 作用...
Linux 簡單實現 ls l 命令
ls l命令 系統效果 列出檔案屬性,許可權,使用者等資訊 簡單實現 include include include include include include include include include struct stat sbuf struct stat sbuf dst struc...