truncate函式和ftruncate修改檔案大小-linux
相關函式:open, ftruncate
表頭檔案:#include <unistd.h>
定義函式:int truncate(const char *path, off_t length);
truncate("/aaa",500);
函式說明:truncate()會將引數path指定的檔案大小改為引數length指定的大小。 如果原來的檔案大小比引數length大,則超過的部分會被刪除
返回值:執行成功則返回0, 失敗返回-1, 錯誤原因存於errno
錯誤程式碼:EACCESS 引數path所指定的檔案無法存取
EROFS 欲寫入的檔案存在於只讀檔案系統內
EFAULT 引數path指標超出可存取空間
EINVAL 引數path包含不合法字元
ENAMETOOLONG 引數path太長
ENOTDIR 引數path路徑並非一目錄
EISDIR 引數path指向一目錄
ETXTBUSY 引數path所指的檔案為共享程式,而且正被執行中
ELOOP 引數path有過多符號連線問題
EIO I/O存取錯誤
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
ftruncate(改變檔案大小)
相關函式 open,truncate
表頭檔案 #include<unistd.h>
定義函式 int ftruncate(int fd,off_t length);
----------------------------------------------------------------------------
out=open("/aaaa",O_RDWR|O_CREAT,S_IRUSR);
ftruncate(out,500);
close(out);
----------------------------------------------------------------------------
函式說明
ftruncate()會將引數fd指定的檔案大小改為引數length指定的大小。
引數fd為已開啟的檔案描述詞,而且必須是以寫入模式開啟的檔案。
如果原來的檔案大小比引數length大,則超過的部分會被刪去。
返回值
執行成功則返回0,失敗返回-1,錯誤原因存於errno。
錯誤程式碼
EBADF 引數fd檔案描述詞為無效的或該檔案已關閉。
EINVAL 引數fd 為一socket 並非檔案,或是該檔案並非以寫入模式開啟。