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