Linux系統呼叫之檔案和目錄的維護

2021-05-28 15:29:50 字數 4486 閱讀 8248

一、系統呼叫列表

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

int chown (const char *path,uid_t owner,gid_t group);

int unlink (const char *path);

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

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

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

int rmdir (const char *path);

int chdir (const char *path);

char * getcwd (char *buf,size_t size);

dir * opendir (const char *name);

struct dirent * readdir (dir *dirp);

long int telldir (dir *dirp);

void seekdir (dir *dirp,long int loc);

int closedir (dir *dirp);

二、系統呼叫說明

1、chmod

說明:改變檔案(或目錄)的訪問許可權。

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

用法:#include

#include

引數:path,給出了檔案路徑

mode,設定檔案的許可權,mode取值如下:

s_isuid                      04000               set user id on execution

s_isgid                      02000               set group id on execution

s_isvtx                      01000               sticky bit

s_irusr                    00400               read by owner

s_iwusr                    00200               write by owner

s_ixusr                     00100               execute/search by owner

s_irgrp                    00040              read by group

s_iwgrp                   00020               write by group

s_ixgrp                    00010                execute/search by group

s_iroth                    00004               read by others

s_iwoth                   00002                write by others

s_ixoth                    00001                execute/search by others

返回值:成功,返回0;失敗,返回-1,同時errno置位。

2、chown

說明:改變檔案的所有者和組。

原型:int chown (const char *path,uid_t owner,gid_t group);

用法:#include

#include

引數:path,檔案路徑

uid_t,使用者id

gid_t,組id

返回值:成功,返回0;失敗,返回-1,同時errno置位。

3、unlink

說明:從檔案系統刪除乙個名字,如果這個名字是乙個檔案的最後乙個連線,並且沒有程序開啟它,則這個檔案被刪除,空間被釋放。如果這個名字是乙個檔案的最後乙個連線,但是有其他程序開啟了這個檔案,那麼這個檔案就會一直保持存在,直到最後乙個檔案描述符被關閉。如果這個名字關聯到乙個符號連線,則這個連線被刪除。如果這個名字關聯到乙個socket,fifo或者裝置,那麼這個名字被刪除,但是使用這個物件的程序可以繼續使用它。

原型:int unlink (const char *path);

用法:#include

引數:path,檔案路徑

返回值:成功,返回0;失敗,返回-1,同時errno置位。

4、link

說明:為已有的檔案建立乙個新的連線。

原型:int link (const char *oldpath,const char *newpath);

用法:#include

引數:oldpath,原檔案路徑

newpath,檔案的新路徑

返回值:成功,返回0;失敗,返回-1,同時errno置位。

5、symlink

說明:建立乙個名為newpath的符號連線,該連線包含oldpath。

原型:int symlink (const char *oldpath,const char *newpath);

用法:#include

引數:oldpath,原檔案路徑

newpath,檔案的新路徑

返回值:成功,返回0;失敗,返回-1,同時errno置位。

6、mkdir

說明:建立乙個目錄。

原型:int mkdir (const char *path,mode_t mode);

用法:#include

#include

引數:path,目錄名

mode,給出了目錄的許可權,mode要服從umask的設定。

返回值:成功,返回0;失敗,返回-1,如果發生錯誤,errno置位。

7、rmdir

說明:刪除乙個空目錄。

原型:int rmdir (const char *path);

用法:#include

引數:path,目錄名。

返回值:成功,返回0;失敗,返回-1,同時errno置位。

8、chdir

說明:改變當前的工作目錄到path指定的路徑。

原型:int chdir (const char *path);

用法:#include

引數:path,指定當前工作目錄的路徑。

返回值:成功,返回0;失敗,返回-1,同時errno置位。

9、getcwd

說明:獲取當前工作目錄的絕對路徑。

原型:char * getcwd (char *buf,size_t size);

用法:#include

引數:buf,存放當前工作目錄的緩衝區。

size,buf的長度。

返回值:成功,返回指向buf的指標,如果目錄名字長度超出了size,則返回null。

10、opendir

說明:開啟乙個目錄流,這個流位於目錄裡的第一項。

原型:dir * opendir (const char *name);

用法:#include

#include

引數:name,目錄名。

返回值:成功,返回目錄流指標;失敗,返回null,同時errno置位。

11、 readdir

原型:struct dirent * readdir (dir *dirp);

用法:#include

#include

引數:dirp,目錄流指標。

返回值:成功,返回乙個指向dirent struct的指標;發生錯誤,或達到檔案結尾(eof),返回null,發生錯誤時,errno置位。

12、telldir

說明:返回目錄流裡的當前位置。

原型:long int telldir (dir *dirp);

用法:#include

#include

引數:dirp,目錄流指標。

返回值:成功,返回目錄流中當前位置;失敗,返回-1,同時errno置位。

13、seekdir

原型:void seekdir (dir *dirp,long int loc);

用法:#include

#include

引數:dirp,目錄流指標。

loc,用來設定指標位置。

返回值:無。

14、closedir

說明:關閉目錄流。

原型:int closedir (dir *dirp);

用法:#include

#include

引數:dirp,目錄流指標。

返回值:成功,返回0;失敗,返回-1,同時errno置位。

linux系統呼叫之檔案系統操作

access 確定檔案的可訪問性 chdir 改變當前工作目錄 fchdir 參見chdir chmod 改變檔案方式 fchmod 參見chmod chown 改變檔案的屬主或使用者組 fchown 參見chown lchown 參見chown chroot 改變根目錄 stat 取檔案狀態資訊 ...

系統呼叫之檔案訪問

1 write 系統呼叫 系統呼叫write 的作用是,把緩衝區 buf的前 nbytes 位元組寫入到與檔案描述符 fildes 關聯的檔案中,同時它會返回實際寫入的位元組數。如果返回 0,就表示為寫出任何資料 如果是 1,就表示在 write 系統呼叫中出現了錯誤,對應的錯誤碼儲存在全域性變數 ...

Linux系統呼叫之open , close

open函式可以開啟或建立乙個檔案。include include include intopen constchar pathname,intflags intopen constchar pathname,intflags,mode t mode 返回值 成功返回新分配的檔案描述符,出錯返回 1...