linux的常用操作——open函数
1.linux系統(tǒng)函數(shù)
\qquad使用linux系統(tǒng)函數(shù)和使用一般C庫(kù)函數(shù)沒(méi)有什么本質(zhì)區(qū)別。在linux下編寫(xiě)c語(yǔ)言程序時(shí),如果使用系統(tǒng)函數(shù),也需要包含系統(tǒng)函數(shù)的頭文件,函數(shù)也有參數(shù),返回值,這和使用C庫(kù)函數(shù)時(shí)的操作是一樣的。
2.open函數(shù)
\qquadopen函數(shù),有兩種類型,一種是兩個(gè)參數(shù);一種是三個(gè)參數(shù)。兩個(gè)參數(shù)的open()函數(shù)適合于打開(kāi)已經(jīng)存在的函數(shù);三個(gè)參數(shù)的open()函數(shù)適合于創(chuàng)建并打開(kāi)一個(gè)不存在的文件。
2.1 open函數(shù)有兩個(gè)參數(shù)時(shí)
\qquadopen()函數(shù)的返回值:當(dāng)返回-1時(shí),發(fā)生錯(cuò)誤;當(dāng)返回文件描述符(不是-1)時(shí),打開(kāi)成功。
\qquadopen()函數(shù)的兩個(gè)參數(shù):第一個(gè)參數(shù):文件路徑,需要用雙引號(hào)把文件路徑引起來(lái);第二個(gè)參數(shù):打開(kāi)方式,有以下三種分別是,O_RDWR可讀可寫(xiě),O_RDONLY只讀,O_WRONLY只寫(xiě)。
使用系統(tǒng)函數(shù)open()函數(shù)舉例,open()需要包含三個(gè)頭文件。
\qquad當(dāng)函數(shù)只有兩個(gè)參數(shù)時(shí),舉例。
\qquadopen()函數(shù)和close()函數(shù)是成對(duì)出現(xiàn)的,文件打開(kāi)之后,在使用之后必須進(jìn)行關(guān)閉。close()函數(shù)只有一個(gè),并且只有一個(gè)參數(shù)。
\qquadclose()函數(shù)的返回值:當(dāng)關(guān)閉成功時(shí),返回0;當(dāng)關(guān)閉失敗時(shí),返回-1。
\qquadclose()函數(shù)的參數(shù):close()函數(shù)只有一個(gè)參數(shù),即文件描述符,也就是open()函數(shù)打開(kāi)成功之后的返回值。
2.2 open函數(shù)有三個(gè)參數(shù)時(shí)
\qquad有三個(gè)參數(shù)的open()函數(shù)可以用于創(chuàng)建新文件。
\qquad返回值:當(dāng)返回-1時(shí),發(fā)生錯(cuò)誤;當(dāng)返回文件描述符(不是-1)時(shí),打開(kāi)成功。
\qquadopen()函數(shù)的三個(gè)參數(shù):
\qquad \quad第一個(gè)參數(shù):文件路徑,同上;
\qquad \quad第二個(gè)參數(shù):除了上述的O_RDWR可讀可寫(xiě),O_RDONLY只讀,O_WRONLY只寫(xiě)外,還有 O_CLOEXEC, O_CREAT, O_DIRECTORY, O_EXCL, O_NOCTTY, O_NOFOLLOW, O_TMPFILE和 O_TRUNC。這里創(chuàng)建文件采用O_RDWR | O_CREAT;
\qquad \quad第三個(gè)參數(shù):基于數(shù)字設(shè)置文件權(quán)限,實(shí)際的文件權(quán)限=本地掩碼取反之后,與設(shè)置的文件權(quán)限進(jìn)行按位與操作查看本地掩碼命令:umask。我的本地掩碼是:0002,二進(jìn)制就是000 000 010,本地掩碼取反就是111 111 101;設(shè)置的權(quán)限是777,二進(jìn)制就是111 111 111,我們將兩者按位與得到111 111 101,轉(zhuǎn)換過(guò)來(lái)就是775,也就是rwx rwx r-x
\qquad舉例:
#include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<errno.h> #include<stdlib.h> #include<unistd.h>int main() {int open_fd;int close_fd;open_fd = open("creat.txt",O_RDWR|O_CREAT,0777);if(open_fd==-1){perror("open fail!");exit(1);}else{printf("open syccess!\n");}close_fd = close(open_fd);if(close_fd==-1){perror("close fail");exit(1);}else if(close_fd==0){printf("close success!\n");}return 0; }\qquad執(zhí)行之后,果然生成一個(gè)空文件creat.txt,權(quán)限是rwx rwx r-x。
總結(jié)
以上是生活随笔為你收集整理的linux的常用操作——open函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机网络之Web应用
- 下一篇: linux网络编程——webserver