C言語システムコール-truncate
truncateシステムコール
概要
truncateは指定ファイルのファイルサイズを切り詰めます。
truncateで切り詰める指定サイズ(バイト単位)が元ファイルより小さい場合には、切り詰め以外のデータは破棄されます。
切り詰める指定サイズ(バイト単位)が元ファイルより大きい場合には、ファイルサイズが増加します。
増加部分のデータを読み込むと「0」が返されます。
増加部分に対しては、すぐに物理ディスクは割り当てられず、ファイルがsparesファイルになります。
truncateはファイルパス名を指定しますが、ファイルディスクリプタを用いる場合には「ftruncate」を使用します。
サンプルプログラム
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
/*!
* @brief ファイルを64Bytesに切り詰める。
* @param[in] filepath ファイルパス名
* @return 0:success/-1:failure
*/
static int
truncate_64bytes(char *filepath)
{
int rc = 0;
rc = truncate(filepath, 64);
if(rc < 0){
printf("Error: truncate() %s: %s\n", strerror(errno), filepath);
return(-1);
}
return(0);
}
int
main(int argc, char *argv[])
{
int rc = 0;
if(argc != 2){
printf("Usage: %s <path>\n", argv[0]);
exit(EXIT_FAILURE);
}
rc = truncate_64bytes(argv[1]);
if(rc != 0) exit(EXIT_FAILURE);
exit(EXIT_SUCCESS);
}
関連ページ
- C言語システムコール-open
- C言語システムコール-creat
- C言語システムコール-close
- C言語システムコール-read
- C言語システムコール-write
- C言語システムコール-lseek
- C言語システムコール-truncate
- C言語システムコール-rename
- C言語システムコール-mkdir
- C言語システムコール-rmdir
- C言語システムコール-link
- C言語
- C言語システムコール