Zdravím,
vyskytol sa u mňa nasledujúci problém. Keď sa v C++ snažím pristupovať k súboru na čítanie relatívne (výstup kompilátoru aj súbor v tej istej zložke), tak z neznámeho dôvodu ho program po spustení nevie nájsť/otvoriť. Keď použijem absolútnu cestu, tak je všetko v poriadku. Netrapilo by ma to, ak by to ešte včera nešlo bez problémov aj s relatívnou cestou.
Kompilátor je g++ na ubuntu 12.04.
Ďakujem za rady.
C++ relativna cesta
-
S.T.E.A.L.T.H
Light Professional
- Príspevky: 933
- Registrovaný: 31 jan 2010, 14:44
- Bydlisko: Pegasus Galaxy
-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: C++ relativna cesta
Myslim, ze je skor dolezitejsie ako ten program spustas.
ak je to konzolova aplikacia skus tam hodit system("pwd"); alebo getcwd
ak je to konzolova aplikacia skus tam hodit system("pwd"); alebo getcwd
-
S.T.E.A.L.T.H
Light Professional
- Príspevky: 933
- Registrovaný: 31 jan 2010, 14:44
- Bydlisko: Pegasus Galaxy
Re: C++ relativna cesta
Skúsim, len keď s tým pred tým nebol problém, bez prídavného kódu, tak nechápem čo sa s tým porobilo teraz (jediná zmena, ktorú som robil so systémom medzi tým bolo inštalovanie nejakých pythonových knižníc/aplikácií). Btw, je to konzolová aplikácia spúšťaná cez terminál.
//editacia
OK, takže moja chyba. Práve keď som s tým bojoval som si uvedomil, že naozaj bol problém v tom, ako som to spúšťal. Pred tým som bol stále na-cd-čkovaný v zložke a teraz som to spúšťal z /home, preto to nešlo. Ale vďaka aj tak, pozriem sa minimálne ešte na to getcwd
//editacia
OK, takže moja chyba. Práve keď som s tým bojoval som si uvedomil, že naozaj bol problém v tom, ako som to spúšťal. Pred tým som bol stále na-cd-čkovaný v zložke a teraz som to spúšťal z /home, preto to nešlo. Ale vďaka aj tak, pozriem sa minimálne ešte na to getcwd
Re: C++ relativna cesta
Ak by si chcel vždy pracovať s cestami relatívne k uloženiu programu bez ohľadu na cwd, môžeš
- pozrieť argv[0] ktorý môže byť relatívny k $PATH, cwd a root
- zistiť kam ukazuje /proc/self/exe (readlink("/proc/self/exe", retazec, dlzka))