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



symlinkシステムコール

概要

symlinkはシンボリックリンクを作成します。


シンボリックリンクとは、ファイルやディレクトリに別の名前を与えて、その名前をファイル本体と同様に扱えるようにするUNIX系OSのファイルシステム機能です。

シンボリックリンクは「ln -s」コマンドで作成することができ、ファイルシステム上にはリンク情報が格納された0バイトのファイルが作成されます。


シンボリックリンクはデバイス間やファイルシステム間などで自由にリンクを張ることができます。

対して、ハードリンクではファイルシステム管理用のファイルエントリに複数の名前を登録するため、異なるファイルシステムへリンクできないという制限があります。

なお、ハードリンクでは実体ファイルの削除ができるが、シンボリックリンクを通じて実体を削除することはできません。


サンプルプログラム

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

static int
symbolic_link(char *src, char *dst)
{
    int rc = 0;

    rc = symlink(src, dst);
    if(rc < 0){
        printf("Error: symlink(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    return(0);
}

int
main(int argc, char *argv[])
{
    int rc = 0;

    if(argc != 3){
        printf("Usage: %s <src> <dest>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    rc = symbolic_link(argv[1], argv[2]);
    if(rc != 0) exit(EXIT_FAILURE);

    exit(EXIT_SUCCESS);
}

関連

C言語

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

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

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



スポンサード リンク