版權所有 © 2014 tutorialspoint
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
in_fd 應為開啟以供讀取的檔案描述符,而out_fd 應為開啟以供寫入的描述符。
如果offset 不為 NULL,則它指向一個變數,該變數儲存sendfile() 將從中讀取資料的in_fd 的檔案偏移量。當sendfile() 返回時,此變數將設定為讀取的最後一個位元組後的位元組的偏移量。如果offset 不為 NULL,則sendfile() 不會修改in_fd 的當前檔案偏移量;否則,當前檔案偏移量將被調整以反映從in_fd 讀取的位元組數。
count是要在檔案描述符之間複製的位元組數。
目前(Linux 2.6.9):in_fd必須對應於支援mmap() 類操作的檔案(即,它不能是套接字);並且out_fd必須引用套接字。
如果sendfile() 使用EINVAL或ENOSYS失敗,應用程式可能希望回退到read(2)/write(2)。
在Linux 2.4和更早版本中,out_fd可以引用常規檔案,並且sendfile()會更改該檔案的當前偏移量。
其他 Unix 系統使用不同的語義和原型實現sendfile()。不應在可移植程式中使用它。
open (2)
mmap (2)
socket (2)
廣告