私はubuntuマシンで次のcコードを実行しました...ファイルをロックするためのfcntl()の使用について読みましたが、F_WRLCKオプトンが設定されている場合は読み取ることさえできません...したがって、このプログラムを開始し、放棄する前にEnterキーを押してロックすると、2つの方法でファイルを開こうとしました。file1.cppを直接ダブルクリックする方法と、新しいターミナルで別のcプログラムを実行する方法です。 fcntl()は、F_WRLCKが設定されているときにこれらのファイルを開くことを許可します。
int main(int argc, char *argv[])
{
struct flock fl = {F_WRLCK, SEEK_SET, 0, 0, 0 };
int fd;
fl.l_pid = getpid();
if ((fd = open("/home/file1.cpp", O_WRONLY)) == -1)
{
perror("open");
exit(1);
}
if (fcntl(fd, F_SETLKW, &fl) == -1)
{
perror("fcntl");
exit(1);
}
printf("Press <RETURN> to release lock: ");
getchar();
fl.l_type = F_UNLCK; /* set to unlock same region */
if (fcntl(fd, F_SETLK, &fl) == -1)
{
perror("fcntl");
exit(1);
}
printf("Unlocked.\n");
close(fd);
return 0;
}