IFS 上へのファイル作成では open 関数で存在していなければ、ファイルを
作成し、存在していれば上書きで作成することができる。
#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)); }
というような感じである。
このファイルを作成した後で、このファイルの権限を設定したい場合がある。
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
(書き込み、読み取りとも可 )の権限を
与えてくれる。
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 )
を指定している。