other versions
GETCWD(3) | Linux Programmer's Manual | GETCWD(3) |
名前¶
getcwd, getwd, get_current_dir_name - カレントワーキングディレクトリ名の取得書式¶
#include <unistd.h>char *getcwd(char *buf, size_t size);char *getwd(char *buf);char *get_current_dir_name(void);
glibc 向けの機能検査マクロの要件 ( feature_test_macros(7) 参照):
get_current_dir_name():
_GNU_SOURCE
- glibc 2.12 以降:
-
_BSD_SOURCE || (_XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
-
glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED -
説明¶
これらの関数は、呼び出したプロセスのカレントワーキングディレクトリの 絶対パス名 (absolute pathname) が入った文字列を返す。 返される文字列は NULL で終端される。 パス名は関数の結果として返され、引数 buf がある場合は buf 経由でも返される。返り値¶
成功すると、これらの関数はカレントワーキングディレクトリの絶対パス名 が入った文字列へのポインタを返す。 getcwd() と getwd() の場合、返り値は buf と同じ値になる。エラー¶
- EACCES
- ファイル名の構成要素に対する読み込みあるいは検索の権限がない。
- EFAULT
- buf が不正なアドレスを指している。
- EINVAL
- size 引数が 0 かつ、 buf 引数が NULL ポインタでない。
- EINVAL
- getwd(): buf が NULL である。
- ENAMETOOLONG
- getwd(): 絶対パス名が入った NULL 終端された文字列の長さが PATH_MAX バイトを超えている。
- ENOENT
- カレントワーキングディレクトリが削除されている。
- ERANGE
- size 引数の値がワーキングディレクトリの絶対パス名の長さより小さい。 長さには文字列の終端バイトも含まれる。 より大きい配列を確保してもう一度実行する必要がある。
準拠¶
getcwd() は POSIX.1-2001 に準拠している。 POSIX.1-2001 は、 buf が NULL の場合の getcwd() の動作を規定しないままとしている。注意¶
Linux では (2.1.92 以降)、 getcwd() はシステムコールである。 古いシステムでは /proc/self/cwd を参照する。 システムコールも proc ファイルシステムもない場合、 一般的な実装が呼び出される。 この場合においてのみ、(Linux では) この関数は EACCES で失敗する可能性がある。 これらの関数はしばしばカレントワーキングディレクトリの位置を保存し、 後で戻ってくるために利用される。 未使用のファイルディスクリプタが十分ある場合は、 現在のディレクトリ (".") を開いて fchdir(2) を呼び出すほうが普通は高速で信頼性がある。 特に Linux 以外のプラットフォームの場合はそうである。関連項目¶
chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3)この文書について¶
この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-09-20 | GNU |