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 檔案描述符的變化范文是...