2015-10-23 53 views
0

的我有打開同一文件不止一次這樣一個C程序:如何禁止多個fopen()函數相同的文件

FILE *fp1 = fopen("/path/to/file","r"); 
// Without/beore closing fp1 
FILE *fp2 = fopen("/path/to/file","r"); 

我要讓第二fopen()函數失敗,而我跑該程序 。

假設我正在運行我的C程序/可執行文件,從GNU Bash shell (/bin/bash)Bourne shell (/bin/sh)

是否有任何設置/配置可以在我的shell環境中執行,以至於它不允許同一個程序同時打開同一個文件多次。所以第二個fopen()會失敗(即將返回NULL)?

+1

運行程序的shell對程序的運行方式沒有影響。 – Barmar

+0

我不認爲有什麼辦法可以做你想做的。您可以使用文件鎖來防止不同的進程打開文件,但我認爲它們不影響在同一進程中打開。 – Barmar

+0

程序應該跟蹤它打開的文件,並注意它何時試圖打開同一個文件兩次。您可以編寫'my_fopen()'和'my_fclose'函數,將打開的文件列表保存在一個數組中,並檢查它。 – Barmar

回答

0

您可以使用open而不是fopen並傳入O_EXCL標誌。

相關問題