スポンサーリンク

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]
size
引数が 0 です。

[ENOENT]
パス名の構成要素がもはや存在しません。

[ENOMEM]
利用できるメモリが十分ではありません。

[ERANGE]
size
引数が、0 よりも大きいですが、パス名 + 1 よりも小 さいです。

関連項目

chdir(2), fchdir(2), malloc(3), strerror(3)

規格

getcwd() 関数は、 ISO/IEC 9945-1:1990 (‘‘POSIX.1’’) に適合しています。 NULL ポインタを指定して、必要に応じて getcwd() にメモリを割り振らせる機能 は拡張部分です。

歴史

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

バグ

getwd() 関数はエラーチェックを十分に行っていません。また非常に長いパス名 は、有効でも返すことができません。この関数は、互換性のために提供されてい ます。

FreeBSD 10.0 November 24, 1997 FreeBSD 10.0

スポンサーリンク