.\" Copyright (c) 1980, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)link.2 8.3 (Berkeley) 1/12/94 .\" %FreeBSD: src/lib/libc/sys/link.2,v 1.25 2004/07/02 23:52:13 ru Exp % .\" .\" $FreeBSD$ .Dd March 5, 1999 .Dt LINK 2 .Os .Sh 名称 .Nm link .Nd ハードファイルリンクを作成する .Sh ライブラリ .Lb libc .Sh 書式 .In unistd.h .Ft int .Fn link "const char *name1" "const char *name2" .Sh 解説 .Fn link システムコールは、 .Fa name1 が指す下層オブジェクトの属性を持つ、指定のディレクトリエントリ (ハードリンク) .Fa name2 を不可分に作成します。 リンクが正常に完了すると下層オブジェクトのリンクカウントが増加します。 .Fa name1 と .Fa name2 は、下層オブジェクトへのアクセスとアクセス権を等しく共有します。 .Pp .Fa name1 を削除してもファイル .Fa name2 は削除されず、下層オブジェクトのリンクカウントが減少します。 .Pp .Fa name1 引数によって指されるオブジェクト はハードリンクが成功するために存在している必要があり、 .Fa name1 と .Fa name2 の両方が同じファイルシステム上に存在している必要があります。 .Fa name1 引数はディレクトリであってはなりません。 .Sh 戻り値 .Rv -std link .Sh エラー .Fn link システムコールは次の場合に処理に失敗し、リンクは作成されません: .Bl -tag -width Er .It Bq Er ENOTDIR いずれかの前置パス名の構成要素がディレクトリではありません。 .It Bq Er ENAMETOOLONG いずれかのパス名の構成要素が 255 文字を越えているか、 またはいずれかのパス名全体の長さが 1023 文字を越えています。 .It Bq Er ENOENT いずれかの前置パス名の構成要素が存在しません。 .It Bq Er EOPNOTSUPP .Fa name1 によって指定されたファイルが入っているファイルシステムが リンクをサポートしていません。 .It Bq Er EMLINK .Fa name1 で指定されたファイルのリンクカウントが 32767 を越えます。 .It Bq Er EACCES いずれかの前置パス名の構成要素について検索許可が拒否されています。 .It Bq Er EACCES 要求されたリンクは、書込み許可を拒否するモードのディレクトリに 書き込むことを要求しています。 .It Bq Er ELOOP パス名を変換するときに検出されたシンボリックリンクが多すぎます。 .It Bq Er ENOENT .Fa name1 によって指定されたファイルが存在しません。 .It Bq Er EEXIST .Fa name2 によって指定されたリンクが存在します。 .It Bq Er EPERM .Fa name1 によって指定されたファイルはディレクトリであるか、 変更禁止もしくは追加のみ可能であるとフラグが付けられています ( .Xr chflags 2 参照)。 .It Bq Er EXDEV .Fa name2 によって指定されたリンクと .Fa name1 によって指定されたファイルが異なるファイルシステム上にあります。 .It Bq Er ENOSPC ディレクトリを格納しているファイルシステムに容量が残っていないため、 新しいリンクを入れるエントリを置くディレクトリを拡張できません。 .It Bq Er EDQUOT ディレクトリを格納しているファイルシステムでユーザのディスクブロックに 関するクォータが枯渇したため、 新しいリンクを入れるエントリを置くディレクトリを拡張できません。 .It Bq Er EIO ディレクトリエントリを作成するためファイルシステムに 読み書きしている間に入出力エラーが発生しました。 .It Bq Er EROFS 要求されたリンクは、読取り専用ファイルシステム上のディレクトリに 書込みすることを要求しています。 .It Bq Er EFAULT 指定されたパス名の 1 つが、プロセスに割り当てられた アドレス空間の範囲外を指しています。 .El .Sh 関連項目 .Xr readlink 2 , .Xr symlink 2 , .Xr unlink 2 .Sh 規格 .Fn link システムコールは .St -p1003.1-90 に適合しています。 .Sh 歴史 .Fn link 関数は .At v7 で登場しました。 .Pp 従来、スーパユーザは .Fn link システムコールによってディレクトリをリンクでき、 これはファイルシステムの一貫性を破壊するものでした。 この実装では、このような操作はもはや許されません。