版權所有 © 2014 tutorialspoint
#define _XOPEN_SOURCE 600 #include <fcntl.h> int posix_fadvise(int fd, off_t offset, off_t len, int advice);
int posix_fadvise(int fd, off_t offset, off_t len, int advice);
advice適用於從offset開始,擴充套件len位元組(如果len為0,則擴充套件到檔案末尾)的(不一定存在)區域,該區域位於由fd引用的檔案中。該建議不具有約束力;它僅僅構成應用程式的期望。
advice的允許值包括
在 Linux 下,POSIX_FADV_NORMAL 將預讀視窗設定為後備裝置的預設大小;POSIX_FADV_SEQUENTIAL 將此大小加倍,而POSIX_FADV_RANDOM 完全停用檔案預讀。這些更改會影響整個檔案,而不僅僅是指定的區域(但對同一檔案的其他開啟檔案控制代碼沒有影響)。
POSIX_FADV_WILLNEED 和POSIX_FADV_NOREUSE 都啟動對指定區域到頁面快取的非阻塞讀取。讀取的資料量可能會根據虛擬機器負載而減少。(通常會完全滿足幾兆位元組,更多資料很少有用。)
POSIX_FADV_DONTNEED 嘗試釋放與指定區域關聯的快取頁面。例如,在流式傳輸大型檔案時,這很有用。程式可以定期請求核心釋放已使用過的快取資料,以便不會丟棄更有用的快取頁面。
尚未寫入的頁面將不受影響,因此,如果應用程式希望保證頁面將被釋放,則應首先呼叫fsync() 或fdatasync()。
posix_madvise (2)
readahead (2)
廣告