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);
}

関連ページ