2010-12-05 17 views
0

我有一個類方法(在UNIX環境中的共享對象中實現)需要在運行時訪問文本數據文件(使用ifstream)。目前的方法假定數據文件是可開口沒有任何相對路徑,即像如何在運行時啓用共享對象訪問數據文件(UNIX)

ifstream dataFile("data.txt"); 

共享對象從Python代碼加載,並且爲了它爲可用於裝載爲,它是爲複製到\usr\lib\文件夾作爲生成文件的後構建步驟。我的問題是如何使文本數據文件可用於共享對象。我已經考慮了以下可能性:

  • 使用一些相對路徑,但這種方法並不完全傻瓜式的證明(該項目託管在不同的情況下,我不能肯定該目錄樹將保持不變(例如)一個月後)。
  • 複製數據文件以及\usr\lib,但我覺得這是一種錯誤的態度。

歡迎任何建議。

+0

數據文件是否需要修改? – 2010-12-05 10:56:36

+0

@Ignacio Vazquez-Abrams:是的,把它想象成一個內容文件,它可以在不需要重新編譯的情況下進行一些配置更改。 – 2010-12-05 11:02:20

回答

2

正確的方法是將文本文件的位置設置爲在安裝項目時設置的可配置值。在/ etc /中使用配置文件是存儲該值的常用方法。

通過這種方式,您可以將文本文件放入例如/ usr/share /與所有與機器無關的文件(數據文件與機器無關,對吧?),您的代碼將「知道」在哪裏找到它。

請注意,如果數據文件將作爲代碼操作的一部分進行修改,那麼根據文件系統層次結構標準,它應該放在/ var(/ var/lib或者/ var/cache) (FHS)和大多數其他Unix文件系統標準。

如果數據文件可以被認爲是一個配置文件,就像您在其中一個註釋中提到的那樣,您可以將其路徑硬編碼到/ etc /下的某個位置(例如/etc/MyProject/data.cfg)和繼續。

0

我能想到的兩種解決方案:

  • 當你加載你的共享對象,你以某種方式把它的路徑,你的文件。
  • 不是將文件複製到/ usr/lib,而是創建符號鏈接在/ usr/lib中執行,但這不是執行imho的最佳方法。

第一種解決方案對我來說是最好的解決方案。