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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux的常用操作——open函数

發(fā)布時(shí)間:2024/7/19 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的常用操作——open函数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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í),舉例。

#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("hello.txt",O_RDWR);if(open_fd==-1){perror("open fail!");exit(1);}else{printf("open success,文件描述符=%d\n",open_fd);}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; }

\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)題。

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