Heim >Backend-Entwicklung >C++ >Wie kann ich den Pfad meiner ausführbaren C/C-Datei zuverlässig bestimmen?

Wie kann ich den Pfad meiner ausführbaren C/C-Datei zuverlässig bestimmen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-20 13:08:10581Durchsuche

How Can I Reliably Determine the Path of My C/C   Executable?

Bestimmen des ausführbaren Speicherorts in C

In C/C kann das Abrufen des vollständigen Pfads des aktuell ausgeführten Programms mithilfe verschiedener Ansätze erreicht werden . Ein häufiges Problem besteht darin, dass das in der Hauptfunktion bereitgestellte Argument argv[0] nicht immer den vollständigen Pfad bereitstellt. Um dieses Problem anzugehen, untersuchen wir mehrere Lösungen:

Unix-basierte Systeme mit /proc

In Unix-Systemen mit /proc-Unterstützung ist dies die einfachste und zuverlässigste Methode zu:

  • Linux: readlink("/proc/self/exe", buf, bufsize)
  • FreeBSD: readlink("/proc/curproc/file", buf, bufsize)
  • Solaris: readlink("/proc /self/path/a.out", buf, bufsize)

Unix-basierte Systeme ohne /proc

Für Systeme ohne /proc können mehrere Fallbacks eingesetzt werden:

  • Wenn argv[0] mit „/“ beginnt, stellt es einen absoluten Pfad dar.
  • Wenn argv[0] enthält „/“, hängen Sie es an das aktuelle Arbeitsverzeichnis an (vorausgesetzt, es wurde nicht geändert).
  • Suchen Sie Verzeichnisse in $PATH nach der ausführbaren Datei argv[0].

Zusätzlich , wird empfohlen, zu überprüfen, ob es sich bei der ausführbaren Datei um einen symbolischen Link handelt, und ihn relativ zu seinem Verzeichnis aufzulösen (mit Ausnahme der /proc-Methode). Linux).

Windows-Systeme

Unter Windows ist die bevorzugte Methode:

  • GetModuleFileName(NULL, buf, bufsize)

Das obige ist der detaillierte Inhalt vonWie kann ich den Pfad meiner ausführbaren C/C-Datei zuverlässig bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn