hi!
hogy tudnám programból lekérdezni a futó proggi helyét a filerendszerben? magyarul kb. a 'which' parancs c++ megfelelője érdekelne. úgy emlékeztem hoy az argv[0] ezt adja vissza, de nem...
- 984 megtekintés
Hozzászólások
1. Elvileg ha lekerdezed az aktiv konyvtarat, az azt adja vissza, hogy legutobb hol allt mikor a progi indult. Felteve, ha igy indult.
2. Nezzel bele a which parancs forrasaba, hogy milyen fuggvenyt hiv meg.
---------------------
Minél korszakalkotóbb ötlettel állsz elő, annál több hülyén kell átverekedned magadat.
- A hozzászóláshoz be kell jelentkezni
ez azért nem jó, mert nem arra vagyok kíváncsi, hogy mi volt az aktív könyvtár mikor indítottam, hanem hogy hol helyezkedik el maga a programfile
a második tipp viszont lehet jó, utánanézek, köszi!
- A hozzászóláshoz be kell jelentkezni
A which a $PATH-ban keres.
Segíthet a proc filerendszer, ott a /proc/$PID/cmdline file tartalmazza a programm nevét teljes elérési úttal.
- A hozzászóláshoz be kell jelentkezni
köszi a tippet! ugyan a cmdline nem jo, mert nincs benne a teljes eleresi ut, viszont ugyanebben a proc konyvtarban van egy 'exe' nevu link ami a programra mutat :)
- A hozzászóláshoz be kell jelentkezni
Sőt: /proc/self/exe, ekkor a pid-et sem kell kézzel lekérdezni és behelyettesíteni. Tehát egy szimpla readlink() hívás ezzel a fájlnévvel megteszi.
Viszont vigyázz: ezzel Linux-specifikussá válik a kód, másmilyen Unix-okon nem fog futni.
argv[0]-ra visszatérve: a progi indítási módjától függően elképzelhető, hogy teljes útvonal van benne, de általában nem (sőt elvileg bármi lehet), szóval erre nem illik támaszkodni.
Egyébként az egész progit illik úgy megtervezni-megírni hogy ne legyen szüksére tudni hogy hol van a bináris ami fut.
- A hozzászóláshoz be kell jelentkezni
igazából az lenne a cél hogy a help file-t el tudjam érni, és a legegyszerűbbnek az tűnik ha bepakolom a bináris mellé - vindózon így működik is. a szép mondjuk az lenne, ha valahogy el tudnám magyarázni az automake-nek hogy vhova egy share konyvtarba tegye be az adatfile-okat, es a programbol ezt el tudnam erni, de meg nem jottem ra hogy ezt hogy tudom megtenni
- A hozzászóláshoz be kell jelentkezni
> ugyan a cmdline nem jo, mert nincs benne a teljes eleresi ut
Tényleg :) Pont olyan processt néztem amit teljes elérési úttal indítottak.
- A hozzászóláshoz be kell jelentkezni