驅動學習日記2--文件操作系統調用

1.創建

    int create(const char *filename,mode_t mode);

    mode指定新建文件的讀取權限

2.打開

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

    pathname是我們要打開的文件名(包含路徑名稱,缺省認爲在當前路徑下面)flags可以是下表的形式:

                O_RDONLY 只讀打開    O_WRONLY 只寫打開     O_RDWR 讀寫方式打開 (前三個只能三選1) O_APPEND 追加方式打開

                O_CREAT 創建一個文件   O_NOBLOCK 以非阻塞方式打開    O_TRUNC  如果文件已經存在,則刪除文件內容

    mode訪問權限:

                標誌表示太麻煩,用5個數字表示   第一位表示設置用戶ID  ,第二位表示設置組ID  , 第三位用戶自己的權限位 , 第四位表示組的權限 , 第五位  其他人權限。

               1 執行  2 寫  4 讀 (可組合)   eg . 10 705

               1(設置用戶ID)  ,0(不設置組ID),7(1+2+4,讀寫執行),0(沒有權限),5(讀執行)

3.讀寫

    int read(int fd,const void *buf,size_t length);

    int write(int fd,const void *buf,size_t length);

    參數buf爲指向緩衝區的指針,length爲緩衝區的大小(以字節爲單位)。函數read()現從文件描述符fd所指定的文件中讀取length個字節到buf緩衝區中,返回實際讀取的字節數。write()過程反過來。

4.定位

    int lseek(int fd,offset_t offset,int whence);

    lseek()將文件讀寫指針相對whence移動offset個字節。操作成功時,返回文件指針相對於文件頭的位置。whence可以取以下值:

          SEEK_SET:相對文件開頭   SEEK_CUR:相對文件讀寫指針的當前位置   SEEK_END:相對文件末尾

          eg.    lseek(fd,0,seek_end);  返回值是文件的長度。

5.關閉

    int close(int fd);


例子:

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#define LENGTH 100
main()
{
    int fd,len;
    char str[LENGTH];
    /*創建打開一個文件*/
    fd=open("hello.txt",O_CREAT|O_RDWR,00700);
    if(fd){
        /*向文件寫入"hello world"*/
        write(fd,"hello world",strlen("hello world"));
        /*關閉文件*/
        close(fd);    
    }
    /*打開文件*/
    fd=open("hello.txt",O_RDWR);
    /*讀取文件*/
    len=read=(fd,str,LENGTH);
    str[len]='\0';
    printf("%s\n,str");
    /*關閉文件*/
    close(fd);
}

               





   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章