linux 系统调用 open函数使用
生活随笔
收集整理的這篇文章主要介紹了
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, orO_RDWR,分別是只讀方式,只寫方式以及讀寫方式。
此外還有更多的打開方式的標記,可以通過man open命令詳細查看 - mode 為打開文件時賦予的文件用戶,用戶組權限
可以通過設置0777八進制這種方式來設置,也可以通過S_IRWXU類型 的標準mode來設置。標準用戶權限模式如下幾種,該權限的設置可以通過|符號來疊加
a.S_IRWXU00700文件擁有者讀,寫,可執行權限
b.S_IRUSR00400 文件擁有者讀權限
c.S_IWUSR00200 文件擁有者寫權限
d.S_IXUSR00100 文件擁有者可執行權限
e.S_IRWXG00070 文件用戶組讀,寫,可執行權限
f.S_IRGRP00040 文件用戶組讀權限
g.S_IWGRP00020 文件用戶組寫權限
h.S_IXGRP00010 文件用戶組可執行權限
i.S_IRWXO00007 其他用戶讀,寫,執行權限
j.S_IROTH00004 其他用戶讀權限
k.S_IWOTH00002 其他用戶寫權限
l.S_IXOTH00001 其他用戶可執行權限
返回值 操作系統會為當前進程從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函数使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux进程通信:pipe实现进程同步
- 下一篇: linux 系统调用 read,writ