日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

linux 系统调用 open函数使用

發布時間:2023/11/27 生活经验 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 系统调用 open函数使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數介紹

本文僅僅將open系統調用的使用簡單總結一下,關于其實現原理大批的大佬分享可以自行學習。open系統調用主要用于打開或者創建一個文件,并返回文件描述符。

  • 頭文件 #include <fcntl.h>
  • 函數名稱
    a. int open(const char *pathname, int flags);
    b. int open(const char *pathname, int flags, mode_t mode);

以上兩個函數參數含義如下:

  • pathname 字符串類型的文件名稱,“a.txt”
  • flags 為 以什么樣的方式打開文件,主要包括三種O_RDONLY, O_WRONLY, or O_RDWR,分別是只讀方式,只寫方式以及讀寫方式。
    此外還有更多的打開方式的標記,可以通過man open命令詳細查看
  • mode 為打開文件時賦予的文件用戶,用戶組權限
    可以通過設置0777八進制這種方式來設置,也可以通過S_IRWXU類型 的標準mode來設置。標準用戶權限模式如下幾種,該權限的設置可以通過|符號來疊加
    a. S_IRWXU 00700文件擁有者讀,寫,可執行權限
    b. S_IRUSR 00400 文件擁有者讀權限
    c. S_IWUSR 00200 文件擁有者寫權限
    d. S_IXUSR 00100 文件擁有者可執行權限
    e. S_IRWXG 00070 文件用戶組讀,寫,可執行權限
    f. S_IRGRP 00040 文件用戶組讀權限
    g. S_IWGRP 00020 文件用戶組寫權限
    h. S_IXGRP 00010 文件用戶組可執行權限
    i. S_IRWXO 00007 其他用戶讀,寫,執行權限
    j. S_IROTH 00004 其他用戶讀權限
    k. S_IWOTH 00002 其他用戶寫權限
    l. S_IXOTH 00001 其他用戶可執行權限

返回值 操作系統會為當前進程從3開始分配一個未使用的文件描述符,因為0,1,2已經被stdin,stdout,stderr三個默認打開的文件占用。

函數使用

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>int main(int argc, char *argv[])
{int fd;if (argc < 2) {printf("./a.out filename \n");exit(1);}umask(0);//這里關于文件不存在,則創建時賦予文件的權限兩種方式是一樣的,這里賦予的是00770權限//fd=open(argv[1],O_CREAT | O_RDWR, S_IRWXU|S_IRWXG);fd=open(argv[1],O_CREAT | O_RDWR, 0770);printf("%d\n",fd);close(fd);return 0;
}

輸出如下:

zhang@ubuntu:~/test$ gcc test_open.c 
zhang@ubuntu:~/test$ ./a.out test.txt
3
zhang@ubuntu:~/test$ ls -l test.txt 
-rwxrwx--- 1 zhang zhang 0 Sep 15 03:37 test.txt

總結

以上是生活随笔為你收集整理的linux 系统调用 open函数使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。