UNIX程式設計 14 高階IO

2021-08-31 15:22:33 字數 2096 閱讀 2824

1.非阻塞io

對於乙個給定的描述符有兩種方法對其指定非阻塞io

1)如果呼叫open獲得描述符,則可指定o_nonblock標誌

2)對於乙個已經開啟的描述符,則可呼叫fcntl由該函式開啟o_nonblock檔案狀態標誌

#include "apue.h"

#include #include char buf[500000];

intmain(void)

}clr_fl(stdout_fileno, o_nonblock); /* clear nonblocking */

exit(0);

}

2. 記錄鎖

記錄鎖鎖定檔案中的乙個區域

#include int fcntl(int filedes, int cmd, ... /* struct

flock *flockptr */ );

returns: depends on cmd if ok (see following), 1 on error

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,

fd_set *restrict writefds, fd_set

*restrict exceptfds,

const struct timespec *restrict tsptr,

const sigset_t *restrict sigmask);

returns: count of ready descriptors, 0 on timeout, 1 on error

[view full width]

#include int poll(struct pollfd fdarray, nfds_t nfds, int

timeout);

returns: count of ready descriptors, 0 on timeout, 1 on error

5.非同步io

6.readv和writev函式

7.readn和writen函式

8儲存對映io

[view full width]

#include void *mmap(void *addr, size_t len, int prot, int

flag, int filedes,

off_t off );

例:用儲存對映io複製檔案

#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...