EN JA
GETCWD(3)
GETCWD(3) FreeBSD Library Functions Manual GETCWD(3)

名称

getcwd, getwd作業ディレクトリのパス名を取得する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < unistd.h>

char *
getcwd( char *buf, size_t size);

char *
getwd( char *buf);

解説

getcwd() 関数は、現在の作業ディレクトリの絶対パス名を buf で参照されるメモリにコピーし、 buf へのポインタを返します。 size 引数は、 buf で参照される配列のバイトサイズです。

bufNULL の場合は、パス名を格納するのに必要なだけの空間が割り振られます。この空間は後で free(3) できます。

関数 getwd() は、 buf 引数と、(インクルードファイル < sys/param.h> で定義された) MAXPATHLEN サイズの getcwd() 呼び出しと同等のルーチンです。明らかに、 buf は少なくとも MAXPATHLEN バイトの長さであるべきです。

これらのルーチンは従来、作業ディレクトリに戻ってくるためにその名前を保存するプログラムで使用されてきました。これをより速く誤りなく遂行する方法は、カレントディレクトリ (‘ .’) をオープンしておき、 fchdir(2) 関数を使って戻ることです。

戻り値

無事に完了した場合はパス名へのポインタが返ります。そうでなければ NULL ポインタが返り、グローバル変数 errno にエラーを示す値が設定されます。さらに、 getwd() は buf で参照されるメモリに errno に関連するエラーメッセージをコピーします。

エラー

getcwd() 関数は、次の場合に失敗します:
[ EINVAL]
size 引数が 0 です。
[ ENOENT]
パス名の構成要素がもはや存在しません。
[ ENOMEM]
利用できるメモリが十分ではありません。
[ ERANGE]
size 引数が、0 よりも大きいけれど、パス名 + 1 よりも小さい。

getcwd() 関数は、次の場合に失敗します:

[ EACCES]
パス名の構成要素のための、読み込みまたは検索のパーミッションが拒否されました。これは、実現の詳細に依存して、制限された場合にのみチェックされます。

規格

getcwd() 関数は、 IEEE Std 1003.1-1990 (“POSIX.1”) に適合しています。 NULL ポインタを指定して、 getcwd() に必要なメモリを割り振らせる機能は拡張機能です。

歴史

getwd() 関数は、 4.0BSD で登場しました。

バグ

getwd() 関数は十分格納できるかのエラーチェックを行えません。非常に長いパス名は有効でも返せません。この関数は、互換性のために提供されています。
April 17, 2010 FreeBSD