truncate()
是一個用于調整文件大小的 C++ 函數
原型:
truncate()
: int truncate(const char* path, off_t length);
ftruncate()
: int ftruncate(int fd, off_t length);
fopen()
, fclose()
, fread()
, fwrite()
等文件操作函數的原型如下:FILE* fopen(const char* filename, const char* mode);
int fclose(FILE* stream);
size_t fread(void* ptr, size_t size, size_t count, FILE* stream);
size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream);
參數:
truncate()
和 ftruncate()
都接受兩個參數:文件路徑(或文件描述符)和新的文件長度。fopen()
)通常接受文件名和打開模式作為參數。其他函數(如 fread()
和 fwrite()
)則需要文件指針、緩沖區指針、元素大小和元素數量等參數。功能:
truncate()
和 ftruncate()
主要用于調整文件大小。如果新的長度小于當前文件長度,文件將被截斷;如果新的長度大于當前文件長度,文件將被擴展,并用零填充新的空間。fopen()
、fclose()
、fread()
和 fwrite()
)用于打開、關閉、讀取和寫入文件。這些函數提供了對文件內容的更細粒度控制。使用場景:
truncate()
或 ftruncate()
。錯誤處理:
truncate()
和 ftruncate()
在成功時返回 0,失敗時返回 -1,并設置 errno
。線程安全性:
truncate()
和 ftruncate()
通常不是線程安全的,因為它們直接操作文件系統。在多線程環境中使用這些函數時,需要確保文件訪問是同步的。fopen()
、fclose()
等)通常是線程安全的,因為它們操作的是文件指針而不是文件系統。然而,在多線程環境中,對同一文件指針的并發訪問仍然需要同步。總之,truncate()
和 ftruncate()
是用于調整文件大小的特定函數,而文件操作函數提供了更廣泛的文件處理功能。根據你的需求選擇合適的函數。