2012-03-08 80 views
-2

我有兩個程序在「w」模式下打開同一個文件。在這兩種情況下返回的文件指針是相同的。我明白這不應該發生。我錯了嗎?兩個應用程序同時打開單個文件

+0

錯在什麼意義上? – Aziz 2012-03-08 10:16:10

+0

不明白你的意思是:「返回的文件指針在兩種情況下都是相同的」。你應該查看「競賽條件」。當多個線程/應用程序/ ...同時寫入同一空間時,您可能會遇到大問題 – chikuba 2012-03-08 10:17:17

+0

如果兩個程序都試圖同時寫入同一文件,會發生什麼情況? – 2012-03-08 10:19:12

回答

0

您需要管理併發性。如果2個不同的程序或線程訪問單個資源,則需要對它們進行管理以使它們訪問具有互斥條件的資源(本例中爲文件)。

1

同時打開文件進行寫入可能會導致不良的競爭條件,同步問題已被提及。

給你的問題:fopen返回一個指向FILE結構的指針。這個結構被分配在應用程序的私有內存空間中。如今,每個進程都有自己獨立的(virtual) memory address空間(由操作系統映射到實際內存地址)。因此,如果在兩個獨立的程序中使用相同的內存地址,通常背後的真實內存是不一樣的。

在FILE結構中有一個由操作系統提供的用於標識文件的文件句柄,但文件句柄(至少在類Unix系統中)是特定於應用程序的,因此即使它們相同,這意味着什麼。

相關問題