Unix第三章 檔案I O

2021-10-05 10:14:27 字數 2887 閱讀 7437

012

stdin_fileno

stdout_fileno

stderr_fileno

#include

intopen

(const

char

*path,

int oflag /*mode_t mode*/);

intopenat

(int fd,

const

char

*path,

int oflag /*mode_t mode*/

);

012

o_rdonly(唯讀開啟)

o_wronly(只寫開啟)

o_rdwr(讀寫開啟)

由open&openat返回的fd一定是最小的未用描述符數值,這一點被某些應用程式用來在標準輸入 標準輸出或標準錯誤上的開啟新的檔案

path如果給的是絕對路徑,此時open與openat函式功能一致 ; path如果為相對路徑,fd引數指出了相對路徑名在檔案系統中的開始位址 ; path如果為相對路徑,fd引數具有特殊值at_fdcwd(同一程序下所有執行緒共享同乙個工作目錄)

open

(path, o_rdwr | o_creat | o_trunc)

;/*與creat等效

#include

intclose

(int fd)

;/*當乙個程序終止時,核心會自動關閉它所有的開啟檔案,

很多程式都利用了這一功能而不是顯式的用close

#include

off_t lseek

(int fd, off_t offset,

int whence)

;

lseek顯示的為乙個開啟檔案設定偏移量

whence

seek_set

seek_cur

seek_end

檔案開始出offset個位元組

當前值加offset

檔案長度+offset

lseek執行成功,返回新的檔案偏移量,出錯返回-1

#include

"apue.h"

intmain()

/*檢測標準輸入是否可以設定偏移量*/

#include

ssize_t read

(int fd,

void

*buf, size_t nbytes)

;/* *void表示通指標

返回值必須是乙個帶符號整型(ssize_t),以保證能夠返回正整數位元組

第三個引數是乙個無符號整形,表示一次性讀或寫的位元組數

#include

ssize_t write

(int fd,

const

void

*buf, size_t nbytes)

;

#include

ssize_t pread

(int fd,

void

*buf, size_t nbytes, off_t offset)

;//返回值為讀到的位元組數,若已到檔案尾,返回0,若出錯返回-1

ssize_t pwrite

(int fd,

void

*buf, size_t nbytes, off_t offset)

;//相當與呼叫lseek後呼叫write,但又有其重要區別,pread同理

//1.無法中斷其定位和操作

//不更新當前檔案偏移量

#include

intdup

(int fd)

;int

dup2

(int fd,

int fd2)

;// dup返回的描述符一定是當前可用檔案描述符中的最小數值

/* dup2,可以用fd2引數指定新描述符值,若fd2已經開啟,則先關閉

若fd==fd2,則dup2返回fd2而不關閉*/

#include

intfsync

(int fd)

;int

fdatasync

(int fd)

;void

sync

(void

);

#include

intfcntl

(int fd,

int cmd,

/* int arg */);

//若成功則依賴於cmd,若出錯則返回-1

f_dupfd:複製檔案描述符fd,新檔案描述符作為函式值返回

f_dupfd_cloexec:複製檔案描述符,設定與新描述符關聯的fd_cloexec檔案描述符的值,返回新檔案描述符

f_getfd:對應於fd的檔案描述符標誌作為函式值返回

f_setfd:對於fd設定檔案描述符

f_getfl:對應於fd的檔案狀態標誌作為函式值返回

f_setfl:將檔案狀態標誌設定為第三個引數的值(取為整形值)

f_getdown:獲取當前接受sigio和sigurg訊號的程序id或者程序組id

f_setdown:設定接收sigio和sigurg訊號的程序id或程序組id

#include

#include

intioctl

(int fd,

int request,..

.);

第三章 檔案I O

include int open const char pathname,int oflag,mode t mode 成功返回檔案描述符,出錯返回 1 oflag 可多選 o rdonly 唯讀 o wronly 只寫 o rdwr 讀 寫 mode o creat 檔案不存在則建立 o excl ...

第三章 檔案I O

include include off t lseek int fileds,off t offset,int whence 成功返回新檔案的位移量,失敗返回 1 返回值可能為負數,所有測試它的返回值時應該確定是否為 1而不是是否為負數。stdin 屬於標準庫處理的輸入流,其宣告為 file 型的,...

第三章 檔案I O

1.檔案描述符 unix 系統 shell 把檔案描述符 0 與程序的標準輸入關聯,檔案描述符 1 與標準輸出關聯,檔案描述符 2 與標準錯誤關聯 上述 0 1 2 使用時應該替換為符號常量 stdin fileno stdout fileno 和 stderr fileno 檔案描述符的變化范文是...