來說一說 unix/linux中對於檔操作的這幾個函數,這幾個函數基本上可以滿足我們對於 linux 中任何檔的需求,
首先說一說 open這個函數
在 linux 中要對檔進行操作都要先相應的將檔打開然後在處理,為什麼要這麼做呢? 那是因為進程和檔在之間不可以直接操作,要想進程對文件操作首先要用系統調用在進程和文件之間簡歷一條連接,這個連接成為文件描述符,叫就像一條由進程通向內核內核的管道,構建起進程和文件之間的關係。
具體的對文件描述符的理解可以通過它的使用方法來理解,文件描述符(file descriptor)通常是一個小的非負整數。內核用它標識一個特定的進程正在訪問的文件。當內核打開一個以友的文件或者創建一個新的文件時,他發回一個文件描述符(非負整數)。在讀寫文件時就可以使用它。
簡單的介紹一下open這個函數
1 2 3 4 5 6 7 8 9 |
目标 打开一个文件,让进程可以对文件进行操作。 头文件 #include 函数原型 int fd = open(char *name, int how) 参数 name // 文件名 how // 打开模式 O_RDONLY,O_WEONLY,orO_REWR // 返回值 int fd // 返回的文件描述符(非负整数) -1 // 遇到错误 |
如果文件被順利的打開則反悔一個正整數的值,這個值就是文件描述符,既然文件描述符是建立文件和進程之間的連接的,那麼這個 int 類型的返回值是有什麼作用呢?其實這個 int 返回值也就是文件描述符是用來衛衣標識這個進程和文件的連接的。如果同時打開多個文件,他們的文件描述符是不同的,如果一個文件被多個進程同時打開他們的文件描述符也是不同的。這就是文件描述符的唯一性,並且其他函數必須通過文件描述符對文件進行操作。
運用 open 這個函數就可以讓我們打開一個文件,講進程和文件關聯起來。但是當文件被順利打開是否允許再次打開呢?這種情況多發生在多個進程訪問一個文件的情況,unix/linux 並不禁止一個文件同時被多個進程訪問,如果禁止的話多用戶模式中很多命令就不可使用。
本文由 落格博客 原創撰寫:落格博客 » unix/linux 編程學習筆記- 文件描述符和 open 函數
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/527.html