IFS 上へのファイル作成では open 関数で存在していなければ、ファイルを
作成し、存在していれば上書きで作成することができる。
【 例.1 】
#include <fcntl.h> #include <errno.h> : int fildes = FALSE; fildes = open(file, O_WRONLY | O_CREAT | O_TRUNC)) == -1){ printf("[ERROR] CANNOT OPEN FILE = %s:%s\n", file, strerror(errno)); }
というような感じである。
(1) 権限の設定
このファイルを作成した後で、このファイルの権限を設定したい場合がある。
CHGAUT コマンドを使って system 関数で設定してもよいが
2 度手間を無くす意味でも open 関数で open で作成するとと同時に
権限まで指定しておくことができる。
if((fildes = open(file, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXO | S_IRWXU)) == FALSE){ /* *PUBLIC=RWX */ :
のように次の任意指定のパラメータとして S_IRWXO と S_IRWXU を
追加してやればよいのである。
S_IRWXO は *PUBLIC *ALL を意味するし
S_IRWXU は、このユーザーでの *RWX (書き込み、読み取りとも可 )の権限を
与えてくれる。
(2) CCSID の設定
Unicode を利用することが多くなってきた最近では CCSID も同時に
設定しておく必要がある。
open 関数で O_CCSID を指定すると、追加バラメータで CCSID を指定することが
できる。
if((fildes = open(file, O_WRONLY | O_CREAT | O_TRUNC | O_CCSID , S_IRWXO | S_IRWXU, 1208 )) == FALSE){ /* *PUBLIC=RWX */ :
【 解説 】
この例では O_CCSID によって CCSID の指定があることを open 関数に宣言するとともに
CCSID 1208 ( = UTF-8 ) を指定している。