GETCWD(3) FreeBSD ライブラリ関数マニュアル GETCWD(3)
名称
getcwd, getwd − 作業ディレクトリのパス名を取得する |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <unistd.h> char * |
getcwd(char *buf, size_t size); char * |
getwd(char *buf); |
解説 |
getcwd() 関数は、現在の作業ディレクトリの絶対パス名を buf で参照されるメ モリにコピーし、 buf へのポインタを返します。 size 引数は、 buf で参照さ れる配列のバイト数によるサイズです。 buf が NULL の場合は、パス名を保存するのに必要なだけの空間が割り振られま す。この空間は後で free(3) できます。 関数 getwd() は、 getcwd() を buf 引数と、サイズとして (インクルードファ イル 〈sys/param.h〉 で定義された) MAXPATHLEN を用いて呼び出したのと同等の 関数です。 buf が少なくとも、 MAXPATHLEN バイトの長さを持たなければならな いことは明らかです。 これらのルーチンは従来、作業ディレクトリに戻ってくるためにその名前を保存 するようなプログラムによって使用されてきました。これをより速く誤りなく遂 行するものとして、カレントディレクトリ (‘.’) をオープンしておき、 fchdir(2) 関数を使って戻る方法があります。 |
戻り値
無事に完了した場合はパス名へのポインタが返ります。そうでなければ NULL ポ インタが返り、エラーを示すためグローバル変数 errno が設定され、さらに getwd() が errno に関連するエラーメッセージを buf で参照されるメモリにコ ピーします。 |
エラー
getcwd() 関数は次の場合に失敗します。 |
[EACCES]
パス名の構成要素において、読み込みまたは検索のパーミッ ションが拒否されました。 [EINVAL] [ENOENT] [ENOMEM] [ERANGE] 関連項目 |
規格
getcwd() 関数は、 ISO/IEC 9945-1:1990 (‘‘POSIX.1’’) に適合しています。 NULL ポインタを指定して、必要に応じて getcwd() にメモリを割り振らせる機能 は拡張部分です。 |
歴史
getwd() 関数は、 4.0BSD ではじめて登場しました。 |
バグ
getwd() 関数はエラーチェックを十分に行っていません。また非常に長いパス名 は、有効でも返すことができません。この関数は、互換性のために提供されてい ます。 FreeBSD 10.0 November 24, 1997 FreeBSD 10.0 |