23、【Linux系統編程】truncate ftruncate函數


truncate ftruncate函數

  truncate()和ftruncate()都可以用來修改文件大小,但兩者之間也有一些區別。

一、truncate()函數

頭文件:

#include <unistd.h>

函數定義:

int truncate(const char *path, off_t length);

函數調用:

truncate("/aaa",500);

函數說明:

  truncate()會將參數path指定的文件大小改為參數length指定的大小。 如果原來的文件大小比參數length大,則超過的部分會被刪除

返回值:

  執行成功則返回0, 失敗返回-1, 錯誤原因存於errno

錯誤代碼:

 1 EACCESS 參數path所指定的文件無法存取
 2 EROFS 欲寫入的文件存在於只讀文件系統內
 3 EFAULT 參數path指針超出可存取空間
 4 EINVAL 參數path包含不合法字符
 5 ENAMETOOLONG 參數path太長
 6 ENOTDIR 參數path路徑並非一目錄
 7 EISDIR 參數path指向一目錄
 8 ETXTBUSY 參數path所指的文件為共享程序,而且正被執行中
 9 ELOOP 參數path 有過多符號連接問題。
10 EIO I/O存取錯誤

二、ftruncate()函數

頭文件:

#include<unistd.h>

函數定義:

int ftruncate(int fd,off_t length);

函數調用:

1 out=open("/aaaa",O_RDWR|O_CREAT,S_IRUSR);
2 ftruncate(out,500);
3 close(out);

函數說明:

  ftruncate()會將參數fd指定的文件大小改為參數length指定的大小。

  參數fd為已打開的文件描述詞,而且必須是以寫入模式打開的文件

  如果原來的文件大小比參數length大,則超過的部分會被刪去。

返回值:

  執行成功則返回0,失敗返回-1,錯誤原因存於errno。

錯誤代碼:

1 EBADF 參數fd文件描述詞為無效的或該文件已關閉。
2 EINVAL 參數fd 為一socket 並非文件,或是該文件並非以寫入模式打開。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM