相關函數: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 並非文件,或是該文件並非以寫入模式打開。