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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

open()函数

發(fā)布時(shí)間:2025/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 open()函数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

STDOUT_FILENO ? ? ? ? ? ?1?標(biāo)準(zhǔn)輸入

STDIN_FILENO ? ? ? ? ? ? 0?標(biāo)準(zhǔn)輸出

STDERR_FILENO ? ? ? ? 2?標(biāo)準(zhǔn)錯(cuò)誤

?在/proc目錄下的進(jìn)程文件中,有一個(gè)fd的目錄記錄每打開(kāi)一個(gè)文件里面會(huì)有一個(gè)文件標(biāo)示文件,名稱(chēng)以數(shù)字開(kāi)始0 ,1,2....最大好像是65535

包括標(biāo)準(zhǔn)輸入,輸出,錯(cuò)誤字符設(shè)備文件

/dev/pts/1

/dev/pts/1 標(biāo)準(zhǔn)輸出設(shè)備1表示第一個(gè)ssh遠(yuǎn)程連接的編號(hào),

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

對(duì)于open函數(shù)來(lái)說(shuō),第三個(gè)參數(shù)僅當(dāng)創(chuàng)建新文件時(shí)(即 使用了O_CREAT 時(shí))才使用,用于指定文件的訪(fǎng)問(wèn)權(quán)限位(access permission bits)。

pathname 是待打開(kāi)/創(chuàng)建文件的POSIX路徑名(如/home/user/a.cpp);

flags 用于指定文件的打開(kāi)/創(chuàng)建模式,這個(gè)參數(shù)可由以下常量(定義于fcntl.h)通過(guò)邏輯位或邏輯構(gòu)成。

O_RDONLY只讀模式 O_WRONLY只寫(xiě)模式 O_RDWR讀寫(xiě)模式 上述三種標(biāo)志位是互斥的,也就是不可同時(shí)使用,但可與下列的標(biāo)志位利用OR(|)運(yùn)算符組合。 O_CREAT若欲打開(kāi)的文件不存在則自動(dòng)建立該文件。 O_EXCL如果O_CREAT也被設(shè)置,此指令會(huì)去檢查文件是否存在。文件若不存在則建立該文件,否則將導(dǎo)致打開(kāi)文件錯(cuò)誤。此外,若O_CREAT與O_EXCL同時(shí)設(shè)置,并且欲打開(kāi)的文件為符 ? ? ?號(hào)連接,則會(huì)打開(kāi)文件失敗。 O_NOCTTY如果欲打開(kāi)的文件為終端機(jī)設(shè)備時(shí),則不會(huì)將該終端機(jī)當(dāng)成進(jìn)程控制終端機(jī)。 O_TRUNC若文件存在并且以可寫(xiě)的方式打開(kāi)時(shí),此標(biāo)志位會(huì)令文件長(zhǎng)度清為0,而原來(lái)存于該文件的資料也會(huì)消失。 O_APPEND當(dāng)讀寫(xiě)文件時(shí)會(huì)從文件尾開(kāi)始移動(dòng),也就是所寫(xiě)入的數(shù)據(jù)會(huì)以附加的方式加入到文件后面。 O_NONBLOCK以不可阻斷的方式打開(kāi)文件,也就是無(wú)論有無(wú)數(shù)據(jù)讀取或等待,都會(huì)立即返回進(jìn)程之中。 O_NDELAY同O_NONBLOCK。 O_SYNC以同步的方式打開(kāi)文件。 O_NOFOLLOW如果參數(shù)pathname所指的文件為一符號(hào)連接,則會(huì)令打開(kāi)文件失敗。 O_DIRECTORY如果參數(shù)pathname所指的文件并非為一目錄,則會(huì)令打開(kāi)文件失敗。

參數(shù)mode?

此為L(zhǎng)inux2.2以后特有的標(biāo)志位,以避免一些系統(tǒng)安全問(wèn)題。參數(shù)mode 則有下列數(shù)種組合,只有在建立新文件時(shí)才會(huì)生效, 此外真正建文件時(shí)的權(quán)限會(huì)受到umask值所影響,因此該文件權(quán)限應(yīng)該為(mode-umaks)。 例子:


#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
int main(void)
{

  char a[] = {"abc.txt"};
  int fd = open(a , O_RDONLY);

  if(fd == -1)
  {
    printf("%s\n" , strerror(errno));//判斷open是否成功
  }
  else
  {
    printf("%d\n" , fd);
    close(fd);//打開(kāi)完畢后記得關(guān)閉文件
  }

  return EXIT_SUCCESS;
}

轉(zhuǎn)載于:https://www.cnblogs.com/yuankaituo/p/4323477.html

總結(jié)

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

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