Torsten Werner mail.twerner@googlemail.com (Do 03 Apr 2008 15:08:18 CEST):
Hi,
ich stehe wieder mal auf dem Schlauch: wie finde ich in einem C-Programm den vollständigen Pfad zu argv[0], wenn dort z.B. nur "gcc" drin steht? Ich suche eine Funktion, die mir in diesem Fall "/usr/bin/gcc" zurück gibt.
Ich *glaube*, es ist nirgens definiert, daß in argv[0] etwas sinnvolles steht, es bleibt ganz dem Aufrufer überlassen, dort was relevantes reinzutun.
Daß es der Pfad zum Executable ist, ist vielleicht Konvention. Aber beispielsweise muß das Executable gar nicht mehr existieren oder kann ausgetauscht sein, wenn Du den Namen rausgefunden hast.
Aber über /proc/<PID>/exe findest Du zumindest einen Link zum Executable (wo der hinweist, wenn das File inzwischen durch ein anderes ausgetauscht wurde, weiß ich nicht. Wahrscheinlich muß man sich dann selbst kümmern (Inodes vergleichen u.ä.) Aber vielleicht brauchst Du's ja nicht so kompliziert.
Und vielleicht gibt's auch eine bessere Antwort auf die Frage und irgendwo in der glibc steckt eine passende Funktion.