0
我在我的ubuntu機器上執行了下面的c代碼...我已經閱讀了關於fcntl()用來鎖定文件和甚至讀如果F_WRLCK opton被設置爲。 ..所以我按放棄鎖之前啓動這個程序,進入我試圖通過file1.cpp直接雙擊打開文件兩個ways-並在一個新的終端上運行不同的C程序都...時間被打開文件...所以怎麼的fcntl()允許這些文件打開時F_WRLCK設置...filelock允許打開文件
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;
}
@ R..i不明白...真正的fcntl()塊,直到沒有獲得鎖,但獲得了鎖之後,不應該讀取或寫入該文件來禁止同步,因爲我已經獲得一個寫鎖....如果沒有那麼應該使用哪個函數 – avinash
@ R ..我知道了......只需要閱讀[this](http://www.thegeekstuff.com/2012/04/linux-文件鎖定類型/),你的答案變得清晰 – avinash