- 1. 概要
- 2. open
- 3. close
1. 概要
「fcntl」は、「File Control」の略でありましょうな。
2. open
#include <fcntl.h>
int open(const char *path, int flags, ...);
「path」によって指定されるファイルを、引数「flags」によって指定されたように読取りまたは書込み (またはその両方) 用にオープンし、そのファイル記述子を呼び出し元プロセスに返します。
ファイルが存在しない場合にはファイルを作成するように、「flags」引数で指示できます (O_CREAT フラグを指定する)。
この場合、「open()」には 3 番目の引数「mode_t mode」が必要であり、ファイルはモード「mode」で作成され、プロセスの「umask」値によって修正されます。
「fopen」との違いは、戻り値です。
「fopen」では、「FILE」構造体が返されますが、「open」の場合、ファイルディスクリプタという整数値が返ります。
ファイルディスクリプタは、負でない整数で、ファイルオープンに失敗した場合は、「-1」が返ります。
「flag」は、以下の値を論理和で設定します。
O_RDONLY 読取り専用でオープン
O_WRONLY 書込み専用でオープン
O_RDWR 読取りと書込み用にオープン
O_NONBLOCK オープンするときにブロックしない
O_APPEND 書込みのたびに末尾に追加する
O_CREAT ファイルが存在しない場合、作成する
O_TRUNC サイズを 0 に切り捨てる
O_EXCL 作成するファイルが既に存在した場合、エラーとする
O_SHLOCK 共有ロックを不可分に取得する
O_EXLOCK 排他的ロックを不可分に取得する
O_DIRECT キャッシュの効果を無くすまたは減らす
O_FSYNC 同期的に書き込む
O_NOFOLLOW シンボリックリンクを辿らない
3. close
#include <libgen.h>
char *dirname(char *path);
char *basename(char *path);
「dirname」は、「path」で示す、フルパスのファイル名より、ディレクトリの部分文字列を取得します。
「basename」は、「path」で示す、フルパスのファイル名より、ファイル名のみの部分文字列を取得します。
|
|