標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
POSIX.1a |
両方 |
#define _POSIX1_SOURCE 2
#include <unistd.h>
int symlink(const char *pathname, const char *slink);
pathname により指定されたファイルの slink で命名されたシンボリック・リンクを作成します。ファイル・アクセス検査は、ファイル pathname に対しては 実行されず、ファイルは存在している必要はありません。さらに、シンボリック・リンクはファイル・システム境界を 超えることができます。
シンボリック・リンクのパス名が / (スラッシュ) で開始 しない場合には、シンボリック・リンクのパス名は、シンボリック・リンクが含まれるディレクトリーに応じて 解決されます。
正常に実行された場合、symlink() は 0 を戻します。
正常に実行されなかった場合、symlink() は -1 を戻して、名前を付けているどのファイルにも影響を及ぼさずに、errno を次のいずれかの値に設定します。
/* This example works only under z/OS XL C, not z/OS XL C++ */
#define _POSIX1_SOURCE 2
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
main() {
char fn[]="test.file";
char sln[]="test.symlink";
int fd;
if ((fd = creat(fn, S_IWUSR)) < 0)
perror("creat() error");
else {
close(fd);
puts("before symlink()");
system("ls -il test.*");
if (symlink(fn, sln) != 0) {
perror("symlink() error");
unlink(fn);
}
else {
puts("after symlink()");
system("ls -il test.*");
unlink(fn);
puts("after first unlink()");
system("ls -il test.*");
unlink(sln);
}
}
}
before symlink()
4030 --w------- 1 MVSUSR1 SYS1 0 Apr 20 13:57 test.file
after symlink()
4030 --w------- 1 MVSUSR1 SYS1 0 Apr 20 13:57 test.file
4031 l--------- 1 MVSUSR1 SYS1 9 Apr 20 13:57 test.symlink -> test.file
after first unlink()
4031 l--------- 1 MVSUSR1 SYS1 9 Apr 20 13:57 test.symlink -> test.file