argv[0]
Petr Stehlik
pstehlik na sophics.cz
Středa Duben 2 13:04:47 CEST 2003
Zdar vsem,
int main(int argc, char *argv[])
odjakziva jsem mel za to, ze argv[0] obsahuje celou cestu ke spustenemu
programu, tj. napriklad pokud mam /usr/local/bin/printargv0 a jsem treba
v /tmp a pustim-li "printargv0", tak mi vypise
"/usr/local/bin/printargv0". Ted jsem na tomhle zalozil kus nejakeho
sveho programu (cilem je spustit PRG2 z PRG1, pricemz PRG2 lezi tam, kde
PRG1 a ja nevim predem, kde to je).
No a vcera jsem dostal bugreport, ze to nefunguje. Argv[0] obsahuje jen
jmeno souboru, ne cestu k nemu. Nejdriv jsem se vysmal gentoo, ale pak
mi Honza rekl, ze i FreeBSD a dokonce i Debian mu delaji totez. Ze by to
bylo nejak ovlivnene osobou, co u toho pocitace sedi? Nebo nastavenim
bashe/csh? Nebo cim?
Jednoduchy test:
ja:~$ export PATH=$PATH:/tmp
ja:~$ echo -e '#!/bin/sh\necho $0' >/tmp/argvtst
ja:~$ chmod +x /tmp/argvtst
ja:~$ argvtst
Mi to (Debian sid) vypise
/tmp/argvtst
Je to nahoda, nebo se na to muzu spolehnout? A proc to Honza nema ani na
jednom ze tri systemu stejne jako ja?
Petr
Další informace o konferenci Linux