私はANSICcgi-binサーバープログラムを書いています。プログラムの各インスタンスは、同じファイルに同時にアクセスできます。私は次のようにします:
handle = fopen(name,type);
fd = fileno(handle);
MyLockFile(fd) //I use fcntl
.....
問題は、「open」ではなく「fopen」でファイルを開くことです。「ロック」はそのように機能しますか?「ハンドル」ではなく「fd」をロックできます。
その理由は、実行可能な「fd =open...」コードを記述できないためです。以下の私のコードは実行可能ファイルを作成しますが、書き込み権限が設定されていません。どうしてか分かりません
fd = open(name,O_CREAT|O_WRONLY|S_IREAD|S_IWRITE|S_IRGRP|
S_IWGRP|S_IROTH|S_IWOTH);
write(fd,data,strlen(data));
close(fd);
このファイルに書き込むことも追加することもできません。