1.非阻塞io
對於乙個給定的描述符有兩種方法對其指定非阻塞io
1)如果呼叫open獲得描述符,則可指定o_nonblock標誌
2)對於乙個已經開啟的描述符,則可呼叫fcntl由該函式開啟o_nonblock檔案狀態標誌
#include "apue.h"2. 記錄鎖#include #include char buf[500000];
intmain(void)
}clr_fl(stdout_fileno, o_nonblock); /* clear nonblocking */
exit(0);
}
記錄鎖鎖定檔案中的乙個區域
#include int fcntl(int filedes, int cmd, ... /* structreturns: depends on cmd if ok (see following), 1 on errorflock *flockptr */ );
cmd is f_getlk, f_setlk, or f_setlkw
struct flock ;
例:加鎖和解鎖乙個檔案區域的函式
#include "apue.h"鎖的隱含繼承和釋放#include int
lock_reg(int fd, int cmd, int type, off_t offset, int whence, off_t len)
1)2)
3)4)
建議性鎖和強制性鎖
3.streams
1)putmsg和putpmsg函式
2)ioctl
3)寫至流
4)寫模式
5)getmsg和getpmsg函式
6)讀模式
4.io多路轉接
#include
int select(int
maxfdp1, fd_set *restrict
readfds,
fd_set *restrict
writefds, fd_set
exceptfds,
struct timeval *restrict
tvptr);
returns: count of ready descriptors, 0 on timeout, 1 on error
[view full width]
#include int pselect(int maxfdp1, fd_set *restrict readfds,returns: count of ready descriptors, 0 on timeout, 1 on errorfd_set *restrict writefds, fd_set
*restrict exceptfds,
const struct timespec *restrict tsptr,
const sigset_t *restrict sigmask);
[view full width]
#include int poll(struct pollfd fdarray, nfds_t nfds, intreturns: count of ready descriptors, 0 on timeout, 1 on errortimeout);
5.非同步io
6.readv和writev函式
7.readn和writen函式
8儲存對映io
[view full width]
#include void *mmap(void *addr, size_t len, int prot, int例:用儲存對映io複製檔案flag, int filedes,
off_t off );
#include "apue.h"#include #include int
main(int argc, char *argv)
《UNIX環境高階程式設計》 I O
不帶緩衝i o open read write lseek close等 標準i o 帶緩衝 fopen fclose fgets fputs fgetc fputc fwrite fread 標準i o對每個i o流自動進行快取管理 標準i o函式通常呼叫malloc來分配快取 它提供了三種型別的...
Unix高階程式設計 檔案I O
第3章檔案i o 3.1檔案描述符 fd stdin fileno 標準輸入 stdout fileno 標準輸出 stderr fileno 標準錯誤 乙個程序最多開啟63個檔案 3.2 open函式 include int open const char pathname,int oflag,m...
unix環境高階程式設計 檔案i o
一 檔案描述符 對於核心,通過檔案描述符來管理檔案。什麼是檔案描述符?在unix中,用open或者create建立幾個檔案時候,核心向程序返回乙個整數,用來記錄此檔案。以後對檔案進行操作的時候,就用此檔案描述符做引用。二 open函式 open函式用於建立乙個檔案,函式返回檔案描述符。cpp vie...