myls

来源:http://www.cnblogs.com/xiaojiang1025/archive/2016/10/27/6005646.html
-Advertisement-
Play Games

...


#include<stdio.h>
#include<dirent.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<pwd.h>
#include<grp.h>
#include<time.h>

/*
 * $ls -la ~
 * total 460
 * drwxr-xr-x 31 linux linux  4096 10月 27 17:27 .
 * drwxr-xr-x  3 root  root   4096  9月 22  2012 ..
 * -rw-------  1 linux linux  3126 10月  5 12:56 altvimrc
 * -rw-rw-r--  1 linux linux   102 10月 27 11:31 .apport-ignore.xml
 * -rw-------  1 linux linux 20110 10月 27 15:47 .bash_history
 * -rw-r--r--  1 linux linux   220  9月 22  2012 .bash_logout
 */
int main(int argc, const char *argv[])
{
    //打開目錄流
    //迴圈讀取其中的文件名,
    //將文件名使用stat()讀取屬性,並做相應解析
    //寫入到文件
    DIR* dp=opendir(".");
    struct dirent* Dir;
    struct stat File;
    while(Dir=readdir(dp)){
        stat(Dir->d_name,&File);
        char prot[11]={0};
        //獲取文件類型並解析
        switch (File.st_mode&S_IFMT){
        case S_IFSOCK:
            strcpy(prot,"s");
            break;
        case S_IFLNK:
            strcpy(prot,"l");
            break;
        case S_IFREG:
            strcpy(prot,"-");
            break;
        case S_IFBLK:
            strcpy(prot,"b");
            break;
        case S_IFDIR:
            strcpy(prot,"d");
            break;
        case S_IFCHR:
            strcpy(prot,"c");
            break;
        case S_IFIFO:
            strcpy(prot,"p");
            break;

        }
        //獲取文件許可權並解析
        //處理屬主許可權
        if(S_IRUSR==((File.st_mode&S_IRWXU)&S_IRUSR))
            strcat(prot,"r");
        else
            strcat(prot,"-");
        if(S_IWUSR==((File.st_mode&S_IRWXU)&S_IWUSR))
            strcat(prot,"w");
        else
            strcat(prot,"-");
        if(S_IXUSR==((File.st_mode&S_IRWXU)&S_IXUSR))
            strcat(prot,"x");
        else
            strcat(prot,"-");

        //處理屬組許可權
        if(S_IRGRP==((File.st_mode&S_IRWXG)&S_IRGRP))
            strcat(prot,"r");
        else
            strcat(prot,"-");
        if(S_IWGRP==((File.st_mode&S_IRWXG)&S_IWGRP))
            strcat(prot,"w");
        else
            strcat(prot,"-");
        if(S_IXGRP==((File.st_mode&S_IRWXG)&S_IXGRP))
            strcat(prot,"x");
        else
            strcat(prot,"-");

        //處理其他許可權
        if(S_IROTH==((File.st_mode&S_IRWXO)&S_IROTH))
            strcat(prot,"r");
        else
            strcat(prot,"-");
        if(S_IWOTH==((File.st_mode&S_IRWXO)&S_IWOTH))
            strcat(prot,"w");
        else
            strcat(prot,"-");
        if(S_IXOTH==((File.st_mode&S_IRWXO)&S_IXOTH))
            strcat(prot,"x");
        else
            strcat(prot,"-");
        //獲取文件硬鏈接數
        //獲取文件屬主的名
        struct passwd* pwd=getpwuid(File.st_uid);
        //獲取文件屬主的組名
        struct group* grp=getgrgid(File.st_gid);
        //獲取文件的大小
        //獲取文件的mtime
        struct tm* myTime;
        myTime=localtime(&File.st_mtime);
        printf("%s %d %s %s %5ld %d月 %d %02d:%02d %s\n",
                prot,                   
                File.st_nlink,
                pwd->pw_name,           
                grp->gr_name,           
                File.st_size,           
                myTime->tm_mon+1,       
                myTime->tm_mday,        
                myTime->tm_hour,        
                myTime->tm_min,         
                Dir->d_name             
                );
    }
    return 0;
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、系統安裝 1.1、下載ubuntu-mate鏡像:https://ubuntu-mate.org/raspberry-pi/ 下載SDFormatterv4:https://www.sdcard.org/downloads/formatter_4/ 下載Win32DiskImager:https ...
  • 一、Git安裝 到Git的 官網 上去下載相應環境的Git安裝文件。 我的是win10,安裝到D:\ProgramFiles\Git,在桌面右鍵出現下麵兩個紅色框框就可以了。 二、Git配置及生成密鑰 開始菜單->cmd命令進入命令行->進入到工作目錄,運行以下命令,設置Git提交代碼時你自己的用戶 ...
  • Linux虛擬機的安裝(圖文詳解) 下篇會接續Hadoop集群安裝(以此為基礎) 一、安裝準備 VMWorkstation、linux系統鏡像(以下以CentOS6.5為例) 二、安裝過程詳解 關閉防火牆: service iptables stop chkconfig iptables off 添 ...
  • RHEL7.2配置本地yum源 [root@localhost ~]#monut /dev/sr0 /mnt #掛載光碟 [root@localhost ~]# rm -rf /etc/yum.repos.d/* [root@localhost ~]# vim /etc/yum.repos.d/rh ...
  • 1、nginx入門篇 nginx安裝與基礎配置 nginx優化配置分析與說明 nginx模塊結構 2、nginx功能篇 配置nginx的gzip功能 配置nginx的rewrite功能 配置nginx的proxy功能 配置nginx的cache功能 配置nginx的郵件服務功能 3、nginx實現篇 ...
  • 在weblogic中部署項目通常有三種方式:第一,在控制臺中安裝部署;第二,將部署包放在domain域中autodeploy目錄下部署;第三,使用域中配置文件config.xml 進行項目的部署。 控制台部署 1 啟動weblogic服務,登錄到weblogic控制台頁面,輸入用戶名和密碼,登錄到控 ...
  • 主域控角色遷移和奪取(轉載) 轉載自:http://yupeizhi.blog.51cto.com/3157367/1427978 操作系統版本:Windows2012R2 數據中心版 FSMO角色遷移 主域控沒有掛的情況下使用FSMO角色遷移 FSMO角色遷移步驟,下麵步驟在備用域控上執行 0、使 ...
  • Permission deny 許可權 拒絕 查看許可權 ls -a ls -la expression 查看文件夾裡邊東西的許可權 用戶群的分類 組群:一個操作系統可能幾個人同時用 方便小組的文件安全和共用 用戶 組群(在一個組裡邊的) Others root rws rws rws 天神 使用者/ro ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...