Bir programın çalıştığı dizini nasıl bulabilirim?

C/C++ kullanarak bir programın çalıştığı dizinin tam yolunu elde etmek için platformdan bağımsız ve dosya sisteminden bağımsız bir yöntem var mı? Geçerli çalışma dizini ile karıştırılmamalıdır. (Lütfen clib veya STL gibi standart kütüphaneler olmadıkça kütüphane önermeyin).

(Platform/dosya sisteminden bağımsız bir yöntem yoksa, belirli dosya sistemleri için Windows ve Linux'ta çalışan öneriler de kabul edilir).

Kütüphaneler olmadan standart bir yol istiyorsanız: Hayır. Dizin kavramının tamamı standartta yer almamaktadır.

Eğer standarda yakın bir kütüphaneye bazı (taşınabilir) bağımlılıkların uygun olduğunu kabul ediyorsanız: Boost'un dosya sistemi kütüphanesini kullanın ve initial_path() isteyin.

IMHO, iyi bir karma ile elde edebileceğiniz en yakın şeydir (Boost, iyi kurulmuş yüksek kaliteli bir kütüphane setidir)

Yorumlar (3)

Hayır, bunun standart bir yolu yok. C/C++ standartlarının dizinlerin (ya da diğer dosya sistemi organizasyonlarının) varlığını dikkate almadığına inanıyorum.

Windows'ta GetModuleFileName(), hModule parametresi NULL olarak ayarlandığında geçerli işlemin yürütülebilir dosyasının tam yolunu döndürür. Linux konusunda yardımcı olamayacağım.

Ayrıca, geçerli dizini mi yoksa program görüntüsünün/çalıştırılabilir dosyanın bulunduğu dizini mi istediğinizi netleştirmelisiniz. Bu haliyle sorunuz bu noktada biraz muğlak.

Yorumlar (0)

Win32 için GetCurrentDirectory işinizi görecektir.

Yorumlar (0)