SETMODE(3)

名称
getmode, setmode - モードビットを更新する

書式
#include <unistd.h> mode_t getmode(const void *set, mode_t mode) void * setmode(const char *mode_str)

解説
getmode() 関数は、 set が指す値によって変更された様にファイルパーミッションビット mode のコピーを返します。モードビットだけが変更されるのに対し、 ファイルモードの他の部分を調査できます。

setmode() 関数は、 chmod(1) で述べた様に絶対値 (8 進数 ) またはシンボリック値を引数として取り、 getmode() に与えられるモード値を指すポインタを返します。 ファイル作成マスクには相対的なシンボリック値もあるので、 setmode() は umask(2) を呼び出すことがあります。これが生じた場合、ファイル作成マスクは setmode() が復帰する前に復元されます。 呼び出しプログラムがファイル作成マスクの値を setmode() を呼び出した後で変更する場合、将来のファイルモードを正しく更新するために getmode() を呼ぶなら、 setmode() をもう一度呼び出す必要があります。

setmode() に渡されたモードが無効な場合、または戻り値に関する メモリを割り当てできない場合、 setmode() は NULL を返します。

setmode() から返された値は malloc() から得られ、プログラムがその値に対する処理を終えた時、 通常は getmode() の呼び出しの後に、 free() でシステムに返す必要があります。

エラー
setmode() 関数は、処理に失敗して errno をライブラリルーチン malloc(3) で指定されたエラーのどれかに設定することがあります。

関連項目
chmod(1), stat(2), umask(2), malloc(3)

歴史
getmode() 関数と setmode() 関数は 4.4BSD で最初に登場しました。