which

Fórumok

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...

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 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.

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.

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