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)?
運行程序的shell對程序的運行方式沒有影響。 – Barmar
我不認爲有什麼辦法可以做你想做的。您可以使用文件鎖來防止不同的進程打開文件,但我認爲它們不影響在同一進程中打開。 – Barmar
程序應該跟蹤它打開的文件,並注意它何時試圖打開同一個文件兩次。您可以編寫'my_fopen()'和'my_fclose'函數,將打開的文件列表保存在一個數組中,並檢查它。 – Barmar