C言語システムコール-rename

renameシステムコール

概要

renameはファイル名またはファイルの存在する場所を変更します。


変更先ファイル名(newpath)と同名のファイルが存在した場合、既に存在していたファイルを削除した上で、新しいファイルに置き換えられます。

指定ファイルがシンボリックリンクである場合、シンボリックリンク自体が変更されます。


rename実行に際して、ディレクトリが異なる場合はディレクトリエントリからのハードリンクを張り替えることで、ディレクトリ間の移動を行います。

そのため、移動先ディレクトリは同一ファイルシステム上に存在しなければならない制約があります。

ファイルシステム間を移動するには、ファイル内容をコピーするなどの対応が必要になりましす。


サンプルプログラム


#include <stdio.h>
#include <string.h>
#include <errno.h>

int
main(void)
{
    int rc = 0;

    rc = rename("data1.txt", "bak/data1.txt");
    if(rc < 0){
        printf("Error: rename(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    return(0);
}

関連ページ