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

関連ページ