C言語,symlink()関数でシンボリックリンクを作成する

スポンサーリンク

鍛錬 782

C言語,symlink()関数でシンボリックリンクを作成する

シンボリックリンクを作成するには、symlink()関数を使用します。
 
以下は、symlink()関数についてです。

#include <unistd.h>

int symlink(const char *target, const char *linkpath);
 

 
linkpath が存在する場合は、上書きで作成されません。

引数

以下は、上記の引数についてです。

引数 意味
const char *target リンク元のファイル
const char *linkpath リンク先のファイル

戻り値

以下は、戻り値についてです。

戻り値
int 成功した場合 0
int エラーの場合 -1
スポンサーリンク

プログラム

以下は、シンボリックリンクを作成するプログラム、test_symlink.c です。

今回は、リンク元のファイルを「SRC.txt」、リンク先のファイルを「DST.txt」としています。

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

// main
int main(void)
{
	char src_path[256] = "";
	char dst_path[256] = "";
	int ret;
	
	// リンク元ファイルのパスを格納
	strncpy(src_path, "/var/tmp/test/SRC.txt", sizeof(src_path) - 1);
	
	// リンク先ファイルのパスを格納
	strncpy(dst_path, "/var/tmp/test/DST.txt", sizeof(dst_path) - 1);
	
	// シンボリックリンクを作成
	ret = symlink(src_path, dst_path);
	if (ret == -1) {
		perror("symlink");
		exit(EXIT_FAILURE);
	}
	
	return 0;
}
スポンサーリンク

実行結果

以下は、プログラム test_link.c を実行しています。

dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ ls -l /var/tmp/test
合計 4
-rw-r--r-- 1 dummy dummy 4 Mar 15 05:23 SRC.txt
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ gcc -Wall -Wextra test_symlink.c -o test_symlink
dummy@ubuntu:~/any/test/c$ ./test_symlink
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ ls -l /var/tmp/test
合計 4
lrwxrwxrwx 1 dummy dummy 21 Mar 15 05:23 DST.txt -> /var/tmp/test/SRC.txt
-rw-r--r-- 1 dummy dummy  4 Mar 15 05:23 SRC.txt
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ cat /var/tmp/test/SRC.txt
ABC
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ echo "123" >> /var/tmp/test/DST.txt
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ cat /var/tmp/test/SRC.txt
ABC
123
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ 
dummy@ubuntu:~/any/test/c$ cat /var/tmp/test/DST.txt
ABC
123

 
上記に示した通り、シンボリックリンクを作成することができました。

タイトルとURLをコピーしました