C++ relativna cesta

Programovacie jazyky, rady, poradňa...
S.T.E.A.L.T.H
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 933
Registrovaný: 31 jan 2010, 14:44
Bydlisko: Pegasus Galaxy

C++ relativna cesta

Príspevok od používateľa S.T.E.A.L.T.H »

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.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8217
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: C++ relativna cesta

Príspevok od používateľa harrison314 »

Myslim, ze je skor dolezitejsie ako ten program spustas.

ak je to konzolova aplikacia skus tam hodit system("pwd"); alebo getcwd
S.T.E.A.L.T.H
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 933
Registrovaný: 31 jan 2010, 14:44
Bydlisko: Pegasus Galaxy

Re: C++ relativna cesta

Príspevok od používateľa S.T.E.A.L.T.H »

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
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: C++ relativna cesta

Príspevok od používateľa pcsiete »

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))
Napísať odpoveď