READLINK(2)

名称
readlink - シンボリックリンクの値を読取る

ライブラリ
libc

書式
<unistd.h> int readlink(const char *path, char *buf, int bufsiz)

解説
readlink() は、 bufsiz サイズであるバッファ buf 内にシンボリックリンク path の内容を配置します。 readlink() 関数は buf の末尾に NUL 文字を追加しません。

戻り値
呼び出しが正常に完了した場合、バッファ内に配置した文字数を返します。 エラーが起きた場合は -1 を返し、エラーコードがグローバル変数 errno に設定されます。

エラー
readlink() は次の場合に失敗します。

[ENOTDIR]
    パスの構成要素中にディレクトリ以外のものが含まれています。

[ENAMETOOLONG]
    パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。

[ENOENT]
    指定されたファイルが存在しません。

[EACCES]
    指定されたパスには、検索が許可されていないディレクトリが含まれています。

[ELOOP]
    パス名を変換するときに検出されたシンボリックリンクが多すぎます。

[EINVAL]
    指定のファイルがシンボリックリンクではありません。

[EIO]
    ファイルシステムから読取る間に入出力エラーが発生しました。

[EFAULT]
    buf は、プロセスに割り当てられたアドレス空間の範囲外を指しています。

関連項目
lstat(2), stat(2), symlink(2), symlink(7)

歴史
readlink() 関数は 4.2BSD で登場しました。