<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # stat函數 ~~~ #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> ? int stat(const char *path, struct stat *buf); int lstat(const char *pathname, struct stat *buf); 功能: 獲取文件狀態信息 stat和lstat的區別: 當文件是一個符號鏈接時,lstat返回的是該符號鏈接本身的信息; 而stat返回的是該鏈接指向的文件的信息。 參數: path:文件名 buf:保存文件信息的結構體 返回值: 成功: 0 失敗: -1 ~~~ struct stat結構體說明: ~~~ struct stat { dev_t st_dev; //文件的設備編號 ino_t st_ino; //節點 mode_t st_mode; //文件的類型和存取的權限 nlink_t st_nlink; //連到該文件的硬連接數目,剛建立的文件值為1 uid_t st_uid; //用戶ID gid_t st_gid; //組ID dev_t st_rdev; //(設備類型)若此文件為設備文件,則為其設備編號 off_t st_size; //文件字節數(文件大小) blksize_t st_blksize; //塊大小(文件系統的I/O 緩沖區大小) blkcnt_t st_blocks; //塊數 time_t st_atime; //最后一次訪問時間 time_t st_mtime; //最后一次修改時間 time_t st_ctime; //最后一次改變時間(指屬性) }; ~~~ st\_mode(16位整數)參數說明 ![](https://img.kancloud.cn/35/91/359168711b79fb3ce1f4aa99b48cf890_644x611.png) 文件類型判斷應使用宏函數 ![](https://img.kancloud.cn/2b/e1/2be154f79d9766da6ddd87af09bc1a5a_335x234.png) ~~~ int main() { int ret = -1; struct stat buf; ret = stat("a.txt", &buf); if (-1 == ret) { perror("stat"); return 1; } ? if (S_ISREG(buf.st_mode)) { printf("%s\n", "這是普通文件"); } ? return 0; } ~~~ ~~~ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> //查看文件信息命令 //$ stat txt //獲取文件相關信息 int main(int argc, char **argv) { int ret = -1; struct stat buf; if (2 != argc) { printf("usage: ./a.out filename\n"); return 1; } memset(&buf, 0, sizeof(buf)); //獲取文件相關信息 ret = stat(argv[1], &buf); if (-1 == ret) { perror("stat"); return 1; } printf("st_dev: %lu\n", buf.st_dev); printf("st_ino: %lu\n", buf.st_ino); printf("st_nlink: %lu\n", buf.st_nlink); printf("st_uid: %d\n", buf.st_uid); printf("st_gid: %d\n", buf.st_gid); printf("st_rdev:%lu\n", buf.st_rdev); printf("st_size: %ld\n", buf.st_size); printf("st_blksize: %ld\n", buf.st_blksize); printf("st_blocks: %ld\n", buf.st_blocks); #if 0 switch((buf.st_mode & S_IFMT)) { case S_IFSOCK: printf("socket\n"); break; case S_IFLNK : printf("symbolic link\n"); break; case S_IFREG : printf("regular file\n"); break; case S_IFBLK : printf("block device\n"); break; case S_IFDIR : printf("directory\n"); break; case S_IFCHR : printf("character device\n"); break; case S_IFIFO : printf("FIFO\n"); break; defalt: printf("未知類型....\n"); } #else if (S_ISREG(buf.st_mode) ) printf("is it a regular file \n"); if (S_ISDIR(buf.st_mode) ) printf("directory \n"); if (S_ISCHR(buf.st_mode) ) printf("character device \n"); if (S_ISBLK(buf.st_mode) ) printf("block device \n"); if (S_ISFIFO(buf.st_mode)) printf("FIFO (named pipe) \n"); if (S_ISLNK(buf.st_mode) ) printf("symbolic link \n"); if (S_ISSOCK(buf.st_mode)) printf("socket \n"); #endif //判斷文件所屬者權限 if (buf.st_mode & S_IRUSR) printf("r"); else printf("-"); buf.st_mode & S_IWUSR ? printf("w") : printf("-"); buf.st_mode & S_IXUSR ? printf("x") : printf("-"); //判斷文件所屬組權限 buf.st_mode & S_IRGRP ? printf("r") : printf("-"); buf.st_mode & S_IWGRP ? printf("w") : printf("-"); buf.st_mode & S_IXGRP ? printf("x") : printf("-"); //判斷文件其它權限 buf.st_mode & S_IROTH ? printf("r") : printf("-"); buf.st_mode & S_IWOTH ? printf("w") : printf("-"); buf.st_mode & S_IXOTH ? printf("x") : printf("-"); printf("\n"); return 0; } ~~~ # access函數 ~~~ #include <unistd.h> ? int access(const char *pathname, int mode); 功能:測試指定文件是否具有某種屬性 參數: pathname:文件名 mode:文件權限,4種權限 R_OK: 是否有讀權限 W_OK: 是否有寫權限 X_OK: 是否有執行權限 F_OK: 測試文件是否存在 返回值: 0: 有某種權限,或者文件存在 -1:沒有,或文件不存在 ~~~ ~~~ access("txt", F_OK); ~~~ # chmod函數 ~~~ #include <sys/stat.h> ? int chmod(const char *pathname, mode_t mode); 功能:修改文件權限 參數: filename:文件名 mode:權限(8進制數) 返回值: 成功:0 失敗:-1 ~~~ # chown函數 ~~~ #include <unistd.h> ? int chown(const char *pathname, uid_t owner, gid_t group); 功能:修改文件所有者和所屬組 參數: pathname:文件或目錄名 owner:文件所有者id,通過查看 /etc/passwd 得到所有者id group:文件所屬組id,通過查看 /etc/group 得到用戶組id 返回值: 成功:0 失敗:-1 ~~~ # truncate函數 ~~~ #include <unistd.h> #include <sys/types.h> ? int truncate(const char *path, off_t length); 功能:修改文件大小 參數: path:文件文件名字 length:指定的文件大小 a)比原來小, 刪掉后邊的部分 b)比原來大, 向后拓展 返回值: 成功:0 失敗:-1 ~~~ # link函數 ~~~ #include <unistd.h> ? int link(const char *oldpath, const char *newpath); 功能:創建一個硬鏈接 參數: oldpath:源文件名字 newpath:硬鏈接名字 返回值: 成功:0 失敗:-1 ~~~ # symlink函數 ~~~ #include <unistd.h> ? int symlink(const char *target, const char *linkpath); 功能:創建一個軟鏈接 參數: target:源文件名字 linkpath:軟鏈接名字 返回值: 成功:0 失敗:-1 ~~~ # readlink函數 ~~~ #include <unistd.h> ? ssize_t readlink(const char *pathname, char *buf, size_t bufsiz); 功能:讀軟連接對應的文件名,不是讀內容(該函數只能讀軟鏈接文件) 參數: pathname:軟連接名 buf:存放軟件對應的文件名 bufsiz :緩沖區大小(第二個參數存放的最大字節數) 返回值: 成功:>0,讀到buf中的字符個數 失敗:-1 ~~~ # unlink函數 ~~~ #include <unistd.h> ? int unlink(const char *pathname); 功能:刪除一個文件(軟硬鏈接文件) 參數: pathname:刪除的文件名字 返回值: 成功:0 失敗:-1 ~~~ # rename函數 ~~~ #include <stdio.h> ? int rename(const char *oldpath, const char *newpath); 功能:把oldpath的文件名改為newpath 參數: oldpath:舊文件名 newpath:新文件名 返回值: 成功:0 失敗:-1 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看