-2
正確鎖定文件我寫的ANSI C cgi-bin目錄服務器程序。 程序的每個實例都可以同時訪問相同的文件。 我做如下:如何在ANSI C
handle = fopen(name,type);
fd = fileno(handle);
MyLockFile(fd) //I use fcntl
.....
的問題是,我打開文件與「FOPEN」,不與「開放」。 「鎖定」會以這種方式工作嗎? 我可以鎖定「fd」,而不是「處理」。
的原因是,我不能寫可行的「FD =打開...」代碼。 我的代碼在下面創建可執行文件,寫入權限未設置。 我不知道爲什麼
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);
我不會寫也不會追加到該文件。
哦,是的!!!!謝謝!但是可以打開「fopen」,然後「fd = fileno(handle)」,然後鎖定fd? – nms 2013-02-12 13:59:47
@nms那麼,文檔的fcntl說「因爲由標準輸入輸出進行緩衝的(3)庫,該包與例程鎖定使用記錄的應避免;使用讀(2)和寫入(2)代替 。 「 – nos 2013-02-12 14:33:52
據我所知,」fopen「是低級別」open「的例程,我們應該使用低級別的」open「,」write「,」read「來鎖定,而不是」fwrite,...好的。你! – nms 2013-02-12 15:17:26