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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

linux 系统调用 open函数使用

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

函數(shù)介紹

本文僅僅將open系統(tǒng)調(diào)用的使用簡(jiǎn)單總結(jié)一下,關(guān)于其實(shí)現(xiàn)原理大批的大佬分享可以自行學(xué)習(xí)。open系統(tǒng)調(diào)用主要用于打開或者創(chuàng)建一個(gè)文件,并返回文件描述符。

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

以上兩個(gè)函數(shù)參數(shù)含義如下:

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

返回值 操作系統(tǒng)會(huì)為當(dāng)前進(jìn)程從3開始分配一個(gè)未使用的文件描述符,因?yàn)?,1,2已經(jīng)被stdin,stdout,stderr三個(gè)默認(rèn)打開的文件占用。

函數(shù)使用

#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);//這里關(guān)于文件不存在,則創(chuàng)建時(shí)賦予文件的權(quán)限兩種方式是一樣的,這里賦予的是00770權(quán)限//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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。