wie kann ich herausfinden, wie die momentane
Exe-Datei heisst?
Also jetzt ohne main "argv[0] ...
Gruᅵ
Jens
> wie kann ich herausfinden, wie die momentane
> Exe-Datei heisst?
C kennt keine "Exe-Datei".
> Also jetzt ohne main "argv[0] ...
Was man ᅵber argv[0] bekommt, hᅵngt vom Betriebssystem ab. Leider hast
Du uns nicht verraten, welches Du benutzt. Ich tippe mal auf Windows
(wg. "Exe-Datei"). In diesem Fall solltest Du Deine Frage in
de.comp.os.ms-windows.programmer stellen. Dort sitzen die Windows-Experten.
Gruᅵ. Claus
Das ist systemspezifisch (und damit in dieser Gruppe off-topic).
Einige mᅵgliche Antworten:
Windows: Funktion GetModuleFileName mit hModule == 0 aufrufen
Linux : /proc/self/exe ist ein Symbolic Link auf das Executable
HP/UX : Systemaufruf pstat_getproc, Ergebnis in pst_status::pst_ucomm
> Also jetzt ohne main "argv[0] ...
Der Wert von argv[0] muss nichts mit dem Dateinamen des Executables
zu tun haben. Unter Unix (execve) und Windows (CreateProcess) kann
der Aufrufer verschiedene Werte fᅵr Dateiname und argv[0] angeben.
--
Lass die Leute reden und lᅵchle einfach mild,
Die meisten Leute haben ihre Bildung aus der Bild.
Und die besteht nun mal, wer wᅵsste das nicht,
aus: Angst, Hass, Titten und dem Wetterbericht!
> wie kann ich herausfinden, wie die momentane
> Exe-Datei heisst?
> Also jetzt ohne main "argv[0] ...
Ist keine sprachspezifische Frage zu C, also hier OT (für die
Zukunft... ;-).
Wenn sich am WinAPI seit XP nichts Wesentliches geändert hat (wovon
ich mal ausgehe), ist das nicht trivial -- will heißen, es gibt
keine BS-Funktion, die Dir das Ergebnis garantiert korrekt liefert.
Wie man trotzdem (fast) sicher den tatsächlichen Namen nebst
Pfad herausfinden kann, verrät die Implementierung von Tcl, denn
dort gibt es das Kommando "info nameofexecutable", das intern
auf C-Ebene auf "GetNameOfExecutable()" abgebildet wird und dann
in plattformspezifischen Code verzweigt. Die Tcl-Quellen findest
Du z.B. auf <www.tcl.tk> (notfalls Tante Gu fragen); suche nach
dem Auspacken in den Dateien im "win"-Verzeichnis nach "NameOfExe"
(oder "nameofexecutable"); ich meine, es wäre tclWinFile.c, aber
ich habe mir die Quellen schon länger nicht mehr angesehen und
sie momentan auch nicht zur Hand (bzw. auf Platte).
mike