簡要對比C語言中的truncate()函數(shù)與ftruncate()函數(shù)
C語言truncate()函數(shù):改變文件大小
頭文件:
#include <unistd.h>
定義函數(shù):
int truncate(const char * path, off_t length);
函數(shù)說明:truncate()會將參數(shù)path 指定的文件大小改為參數(shù)length 指定的大小. 如果原來的文件大小比參數(shù)length 大, 則超過的部分會被刪去.
返回值:執(zhí)行成功則返回0, 失敗返回-1, 錯誤原因存于errno.
錯誤代碼:
1、EACCESS 參數(shù)path 所指定的文件無法存取。
2、EROFS 欲寫入的文件存在于只讀文件系統(tǒng)內(nèi)。
3、EFAULT 參數(shù)path 指針超出可存取內(nèi)存空間。
4、EINVAL 參數(shù)path 包含不合法字符。
5、ENAMETOOLONG 參數(shù)path 太長。
6、ENOTDIR 參數(shù)path 路徑并非一目錄。
7、EISDIR 參數(shù)path 指向一目錄。
8、ETXTBUSY 參數(shù)path 所指的文件為共享程序, 而且正被執(zhí)行中。
9、ELOOP 參數(shù)path 有過多符號連接問題。
10、EIO I/O 存取錯誤。
C語言ftruncate()函數(shù):改變文件大小
頭文件:
#include <unistd.h>
定義函數(shù):
int ftruncate(int fd, off_t length);
函數(shù)說明:ftruncate()會將參數(shù)fd 指定的文件大小改為參數(shù)length 指定的大小。參數(shù)fd 為已打開的文件描述詞,而且必須是以寫入模式打開的文件。如果原來的文件大小比參數(shù)length 大,則超過的部分會被刪去。
返回值:執(zhí)行成功則返回0, 失敗返回-1, 錯誤原因存于errno.
錯誤代碼:
1、EBADF 參數(shù)fd 文件描述詞為無效的或該文件已關閉。
2、EINVAL 參數(shù)fd 為一socket 并非文件, 或是該文件并非以寫入模式打開。
相關文章
詳解C++的靜態(tài)內(nèi)存分配與動態(tài)內(nèi)存分配
內(nèi)存分配 (Memory Allocation) 是指為計算機程序或服務分配物理內(nèi)存空間或虛擬內(nèi)存空間的一個過程,本文主要介紹了C++的靜態(tài)內(nèi)存分配與動態(tài)內(nèi)存分配,感興趣的同學可以參考閱讀2023-06-06

