Hoe krijg ik de directory van waaruit een programma wordt uitgevoerd?

Is er een platform- en bestandssysteem-agnostische methode om het volledige pad te verkrijgen van de directory van waaruit een programma draait met C/C++? Niet te verwarren met de huidige werkdirectory. (Gelieve geen bibliotheken voor te stellen tenzij het standaard bibliotheken zijn zoals clib of STL).

(Als er geen platform/bestandssysteem-agnostische methode is, zijn suggesties die werken in Windows en Linux voor specifieke bestandssystemen ook welkom).

Als je een standaard manier wilt zonder bibliotheken: Nee. Het hele concept van een directory is niet opgenomen in de standaard.

Als je het ermee eens bent dat enige (portable) afhankelijkheid van een bijna-standaard lib oké is: Gebruik Boost's bestandssysteem bibliotheek en vraag naar de initial_path().

IMHO is dat zo dicht als je kunt komen, met goede karma (Boost is een gevestigde hoge kwaliteit set van bibliotheken)

Commentaren (3)

Nee, er's geen standaardmanier. Ik geloof dat de C/C++ normen niet eens rekening houden met het bestaan van mappen (of andere bestandssysteemorganisaties).

Op Windows zal de GetModuleFileName() het volledige pad naar het uitvoerbare bestand van het huidige proces teruggeven wanneer de hModule parameter op NULL is gezet. Ik kan je niet helpen met Linux.

Ook moet je verduidelijken of je de huidige directory wilt of de directory waar het programma-image/uitvoerbare bestand zich bevindt. Zoals het er nu uitziet is je vraag op dit punt een beetje ambigu.

Commentaren (0)

Voor Win32 zou GetCurrentDirectory het moeten doen.

Commentaren (0)