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 で登場しました。