第八章 檔案操作

2021-06-13 13:25:17 字數 3256 閱讀 8270

第八章、檔案操作

1、檔案

基於檔案描述符的i/o操作是通過檔案描述符對乙個檔案執行i/o操作

檔案描述符:用於描述被開啟檔案的索引值

1)檔案型別

①普通檔案:文字和二進位制

②目錄檔案:存放檔名及其相關資訊的檔案,是核心組織檔案系統的基本節點

④裝置檔案:外部裝置看作是特殊的檔案,包括塊裝置檔案和字元裝置檔案。/dev目錄下,放入/dev/null等於刪除

⑤管道檔案:用於程序間通訊

2)檔案許可權

許可權:讀寫執行rwx

檔案所有者、檔案所有者同組使用者和其他使用者

3)檔案相關資訊

①目錄結構:每個目錄包含乙個名稱和索引節點

②索引節點:所有檔案都有乙個與之相連點的索引節點,儲存檔案的基本資訊

③資料:儲存在索引節點指定的位置上

2、基於檔案描述符的i/o操作

1)檔案的建立、開啟與關閉

#include

#include

#include

int creat(const char *pathname, mode_t mode);

pathname表示檔案的絕對路徑或相對路徑,mode指定建立檔案的許可權

呼叫成功時,返回該檔案的描述符;呼叫失敗,返回-1

int creat(const char *pathname, int flags);

int creat(const char *pathname, int flags, mode_t mode);

flags描述檔案開啟方式

呼叫成功時,返回開啟檔案的描述符;呼叫失敗,返回-1

#include

int close(int fd);

fd是需關閉檔案的描述符

2)檔案的讀寫操作

ssize_t write(int fd, void *buf, size_t count);

fd表示需要進行寫操作的檔案返回的檔案描述符,buf指向存放寫入檔案的資料的緩衝區,count表示要寫入檔案的資料的位元組數

呼叫成功時,返回寫入的位元組數;呼叫失敗,返回-1

ssize_t read(int fd, void *buf, size_t count);

fd表示開啟所讀檔案時返回的檔案描述符,buf指向存放讀入的資料,count表示希望讀取的資料的位元組數

呼叫成功時,返回讀取的位元組數;呼叫失敗,返回-1

3)檔案的定位

off_t lseek(int fildes, off_t offset, int whence);

fildes是所操作檔案的檔案描述符,offset是取的偏移量,whence用於表示計算偏移值的相對位置

呼叫成功時,返回相對於檔案開頭的實際偏移量;呼叫失敗,返回-1

3、檔案的其他操作

1)改變檔案的所有者

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

pathname表示檔案的絕對路徑或相對路徑,owner和group分別表示賦予的所有者識別號和組識別號

int fchown(int fd, uid_t owner, gid_t group);

fd表示要操作檔案的檔案描述符

2)改變檔案的訪問許可權

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

int fchmod(int fd, mode_t mode);

mode表示檔案的許可權設定,一組八進位制

3)重新命名

int rename(const char *oldname, const char *newname);

4)修改檔案長度

int truncate(char *pathname, size_t len);

int ftruncate(int fd, size_t le );

len指定將檔案擷取到的長度

5)dup和dup2呼叫

複製檔案描述符,返回新的檔案描述符

int dup(int fd);   //返回最小的未用檔案描述符

int dup2(int fd, int fd2);   //返回指定的檔案描述符

6)stat、fstat和lstat呼叫

檢視檔案的相關資訊

int stat(const char *pathname, struct stat *sbuf);

int fstat(int fd, struct stat *sbuf);

int lstat(const char *pathname, struct stat *sbuf);   //返回鏈結本身資訊

7)fsync呼叫

int fsync(int fd);

將儲存在緩衝區的資料寫入到檔案

8)flock呼叫

上鎖或解鎖

int flock(int fd, int operation);

operation表示不同的上鎖或解鎖方式

9)fcntl呼叫

檢視或設定檔案的一些相關資訊

int fcntl(int fd, int cmd);

int fcntl(int fd, int cmd, long arg);

4、特殊檔案的操作

1)目錄檔案

①目錄檔案的建立和刪除

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

int rmdir(const char *pathname);

②檔案的開啟和關閉

dir *opendir(const char *pathname);

int closedir(dir *dp);

③目錄檔案的讀取

struct direct *readdir(dir *dp);

訪問目錄檔案指標為dp的目錄檔案

2)鏈結檔案

①硬鏈結

int link(char *pathname1, char *pathname2);

int unlink(char *pathname);

ln 已存在的檔名路徑 tempfile

②符號鏈結

int symlink(const char *actualpath, const char *sympath);

int readlink(const char *actualpath,  char *buf, int bufsize);

3)管道檔案

int pipe(int filedes[2]);

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章 操作字元

python中提供了幫助系統,可以通過如下指令來呼叫 字串的幫助系統 help str 列表的幫助系統 help list 方法 行為string.isupper 當且僅當字串含有至少乙個字母且所有字母為大寫時返回true string.islower 當且僅當字串含有至少乙個字母且所有字母為小寫時...

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...