我有兩個程序在「w」模式下打開同一個文件。在這兩種情況下返回的文件指針是相同的。我明白這不應該發生。我錯了嗎?兩個應用程序同時打開單個文件
-2
A
回答
0
您需要管理併發性。如果2個不同的程序或線程訪問單個資源,則需要對它們進行管理以使它們訪問具有互斥條件的資源(本例中爲文件)。
1
同時打開文件進行寫入可能會導致不良的競爭條件,同步問題已被提及。
給你的問題:fopen
返回一個指向FILE
結構的指針。這個結構被分配在應用程序的私有內存空間中。如今,每個進程都有自己獨立的(virtual) memory address空間(由操作系統映射到實際內存地址)。因此,如果在兩個獨立的程序中使用相同的內存地址,通常背後的真實內存是不一樣的。
在FILE結構中有一個由操作系統提供的用於標識文件的文件句柄,但文件句柄(至少在類Unix系統中)是特定於應用程序的,因此即使它們相同,這意味着什麼。
相關問題
- 1. 同一個應用程序的兩個窗口不能打開
- 2. 使用C++的文件I/O同時打開兩個文件
- 3. 如何從兩個程序同時寫入單個xml文件?
- 4. 單個應用程序的兩個清單文件?
- 5. 兩個進程打開同一個文件進行寫入
- 6. Android應用程序在嘗試打開兩個DataInputStream時掛起
- 7. 使用作曲家同時開發兩個應用程序
- 8. 同時打開Xcode幫助文件和應用程序
- 9. 從兩個WinMo不同的應用程序打開同一個.sdf數據庫文件是否安全?
- 10. 打開兩個Excel文件
- 11. 打開iOS應用程序時,打開某個模式的URL
- 12. 在一個應用程序中打開文本文件
- 13. 用應用程序打開文件
- 14. 當另一個應用程序被點擊時打開一個應用程序
- 15. Android - 用另一個特定的應用程序打開文件
- 16. 同時讓VIM打開兩個文件在分割
- 17. 無法同時從layout&layout-land打開兩個main.xml文件?
- 18. jquery類,同時打開兩個
- 19. 打開兩個結果同時
- 20. 一個簡單的黑莓應用程序,打開一個URL
- 21. 在Java應用程序環境中打開一個.rtx文件?
- 22. 在另一個應用程序中打開文件
- 23. 從另一個應用程序在Osmand中打開gpx文件
- 24. 如何打開在另一個應用程序中打開的文件
- 25. 共同打造兩個ASP.NET Web應用程序和Web窗體應用程序
- 26. 打開一個應用程序的Java
- 27. 同時訪問來自兩個應用程序的文本文件
- 28. 單實例或單個程序打開
- 29. 打開兩個Web應用程序實例
- 30. 一個Xcode項目,兩個目標,兩個應用程序,兩個Default.png文件?
錯在什麼意義上? – Aziz 2012-03-08 10:16:10
不明白你的意思是:「返回的文件指針在兩種情況下都是相同的」。你應該查看「競賽條件」。當多個線程/應用程序/ ...同時寫入同一空間時,您可能會遇到大問題 – chikuba 2012-03-08 10:17:17
如果兩個程序都試圖同時寫入同一文件,會發生什麼情況? – 2012-03-08 10:19:12