Linux高階程式設計基礎——檔案系統程式設計之操作檔案屬性
阿新 • • 發佈:2018-11-10
檔案系統程式設計之操作檔案屬性
/編寫程式實現以下功能: 1.新建檔案,設定檔案許可權遮蔽字為0; 2.建立該檔案的硬連結檔案,列印硬連結檔案的inode節點號和檔案大小; 3.建立該檔案的軟連結檔案,列印軟連結檔案的inode節點號和檔案大小; 列印軟連結檔案中的內容; 4.列印原始檔的inode節點號,檔案大小和連結數目; 5.呼叫unlink對原始檔進行操作,列印原始檔連結數目;/
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> int main() { umask(0); if (creat("wenjian2",S_IRWXU|S_IRWXG|S_IRWXO) < 0) //建立一個名為“wenjain2”的文字檔案, //“S_IRWXU|S_IRWXG|S_IRWXO”給這個檔案所有使用者可讀可寫可執行的許可權, { perror ("creat"); printf ("errno is : %d \n",errno); } else printf ("wenjian2 creat ok \n"); if (link("wenjian2","wenjian3") < 0) //建立檔案“wenjian2”的一個 硬連結檔案“wenjian3” { perror ("link"); printf ("errno is : %d \n",errno) ; } else printf ("硬連結檔案 建立成功\n "); struct stat statwj,statwj1,statwj2; if (lstat("wenjian3",&statwj) < 0) //獲取硬連結檔案“wenjian3”的屬性,放在statwj結構體中, perror ("lstat"); printf ("硬連結檔案節點號 : %ld \n",statwj.st_ino); //輸出檔案節點號 printf ("硬連結檔案大小 :%ld \n ",statwj.st_size); //輸出檔案大小 if (symlink ("wenjian2","wenjian4") < 0) //建立檔案“wenjian2”的一個 軟 連結檔案“wenjian4"” { perror ("symlink"); printf ("errno is : %d \n",errno); } printf ("軟連結檔案 建立成功 \n"); lstat ("wenjian4",&statwj1); //獲取軟連線檔案“wenjian4”的屬性,放在statwj1結構體中, char wj[10]; if (readlink ("wenjian4",wj,1024) < 0) //讀取軟連線檔案“wenjian4” 它 本 身 的屬性,放在wj陣列中, { perror("readlink"); printf ("errno is : %d \n",errno); } printf ("軟連結檔案節點號 :%ld \n",statwj1.st_ino); //輸出檔案節點號 printf ("軟連結檔案大小:%ld \n ",statwj1.st_size); //輸出檔案大小 printf ("軟連結檔案內容: %s \n",wj); //輸出檔案裡面存放的內容 ,,裡面放的是原始檔“wenjian2”的名字, if (unlink("wenjian4") < 0) //刪除軟連線檔案“wenjian4” { perror ("unlink"); printf ("errno is : %d",errno); } else printf ("unlink is ok \n"); if (stat("wenjian2",&statwj2) < 0) //獲取檔案“"wenjian2”的屬性, perror ("lstat"); printf ("nlink is :%ld \n",statwj2.st_nlink); //輸出該檔案的連結檔案數目, printf ("wenjian2檔案節點號 :%ld \n",statwj2.st_ino); //輸出檔案節點號 return 0; }
/*
什麼是硬連結,什麼是軟連線?
硬連結是獨自的一個檔案,但是軟連線相當於原檔案的一個快捷方式,硬連結和原來的檔案沒有什麼區別,而且共享一個 inode(節點)號而軟 連結不共享 inode,2.若原檔案刪除了,則該軟連線則不可以訪問,而硬連線則是可以的。(簡單的說明,可能存在錯誤)
軟連線檔案裡面存放的是什麼?
裡面放的是原始檔“wenjian2”的名字,
*/