linuxc 高階程式設計之檔案操作4

2021-08-20 03:44:01 字數 2224 閱讀 2765

題目要求:

1.新建檔案,設定檔案許可權遮蔽字為0;

2.建立該檔案的硬鏈結檔案,列印硬鏈結檔案的inode節點號和檔案大小;

3.建立該檔案的軟鏈結檔案,列印軟鏈結檔案的inode節點號和檔案大小;列印軟鏈結檔案中的內容;

4.列印原始檔的inode節點號,檔案大小和鏈結數目;

5.呼叫unlink對原始檔進行操作,列印原始檔鏈結數目;

源**:

#include

#include

#include

#include

#include

#include

#include

#include

int main (int argc,char* argv)

fchmod(fd,s_irwxu|s_irwxg|s_irwxo);

struct stat statbuf,statbuf1,statbuf2,statbuf3;

fstat(fd,&statbuf);

umask(0);

close(fd);

if(link("process","process1")<0)

stat("process1",&statbuf1);

printf("link:inodenum:%ld\tsize is :%ld\n",statbuf1.st_ino,statbuf1.st_size);

stat("process",&statbuf3);

if(symlink("process","process2")<0)

lstat("process2",&statbuf2);

char str[1024];

if(readlink("process2",str,1024)<0)

printf("symlink_inode:inodenum:%ld\tsize is :%ld\n",statbuf2.st_ino,statbuf2.st_size);

printf("read num is :%s\n",str);

printf("the father file inode is %ld,size is %ld,linknum is %ld\n",statbuf3.st_ino,statbuf3.st_size,statbuf3.st_nlink);

if(unlink("process")<0)

printf("after unlink , tempfile link num is :%ld",statbuf3.st_nlink);

return 0; }

umask()系統呼叫

功能為程序設定檔案訪問許可權遮蔽字,並返回以前的值

標頭檔案#include

#include

函式原型

mode_t umask(mode_t mask);

chmod()/fchmod()系統呼叫

功能更改檔案許可權

標頭檔案#include

#include

函式原型

int chmod(const char *path, mode_t mode);

int fchmod(int fildes, mode_t mode);

返回值成功時返回0

失敗返回-1

link()/unlink()系統呼叫

功能建立/刪除乙個硬鏈結

標頭檔案#include

函式原型

int link(const char *oldpath, const char *newpath);

int unlink(const char *pathname);

刪除乙個檔案的目錄項並減少它的鏈結數

返回值成功時返回0

失敗返回-1

symlink()/readlink()系統呼叫

標頭檔案#include

函式原型

int symlink(const char *oldpath, const char *newpath);

功能:用來建立符號鏈結檔案。

返回值成功時返回0

否則-1

int readlink(const char *path, char *buf, size_t bufsiz);

功能:readlink 函式用來讀取鏈結檔案本身的內容(也就是符號鏈結指向的檔案的檔名)。

返回值成功時返回放置在buffer中的字元數

否則-1

學習Linux C程式設計之檔案操作

1 fopen函式 fopen函式類似於系統呼叫中的open函式。和open一樣,它返回檔案的識別符號,只是這裡叫做流 stream 在庫函式裡實現為乙個指向檔案的指標。如果需要對裝置的行為進行明確的控制,最好使用底層系統呼叫,因為這可以避免使用庫函式帶來的一些非預期的 如輸入 輸出緩衝。函式原型 ...

Linuxc高階程式設計之程序1

1.列印當前所有環境變數的值 2.新增新的環境變數newenv first 3.修改環境變數newenv的值為second 4.列印環境變數newenv的值。源 include include include extern char environ int main int argc,char ar...

Linuxc高階程式設計之檔案系統大作業

假設乙個學生的資訊包括姓名,學號,性別,年齡,班級,籍貫六項資訊,編寫乙個簡單的學生管理系統 源 include include include include include include include define malloc stu malloc sizeof stu static in...