1. 程式人生 > >truncate函式和ftruncate修改檔案大小-linux

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 並非檔案,或是該檔案並非以寫入模式開啟。