Beim Aufrufen externer Anwendungen über system() in C ist es wichtig, die ordnungsgemäße Behandlung von Argumenten sicherzustellen enthalten Leerzeichen. Wenn sowohl der ausführbare Pfad als auch ein Argument Leerzeichen enthalten, kann ein Fehler auftreten.
system() führt im Wesentlichen den angegebenen Befehl mit cmd /C aus. Bei der Verarbeitung der Befehlszeile beachtet cmd bestimmte Regeln bezüglich Anführungszeichen. Standardmäßig werden die führenden und nachgestellten Anführungszeichen entfernt und die verbleibende Zeichenfolge als Name einer ausführbaren Datei behandelt.
Um dieses Problem zu beheben, muss der Befehl in einen zusätzlichen Satz von eingeschlossen werden doppelte Anführungszeichen:
<code class="cpp">system("\"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>
Diese zusätzliche Anführungszeichenebene stellt sicher, dass cmd jedes Argument korrekt interpretiert, unabhängig vom Vorhandensein von Leerzeichen.
Ein alternativer Ansatz beinhaltet Verwenden einer Batchdatei, um den Befehl mit den gewünschten Argumenten auszuführen. Die Batchdatei kann mit folgendem Inhalt erstellt werden:
cd PATH_TO_DIR EXECUTABLE_NAME ARG1 ARG2
Durch den Aufruf von system() mit diesem Batchdateinamen als Argument wird der Befehl wie vorgesehen ausgeführt, auch wenn Argumente Leerzeichen enthalten.
Um die Kompatibilität mit verschiedenen Umgebungen und Shell-Implementierungen sicherzustellen, wird empfohlen, bei der Verwendung von system() den Schalter /S einzubeziehen. Dieser Schalter zwingt cmd, die Befehlszeile streng auf der Grundlage von Fall 2 zu analysieren, wie in der cmd-Dokumentation beschrieben.
Beispiel:
<code class="cpp">system("cmd /S /C \"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>
Das obige ist der detaillierte Inhalt vonWie führe ich externe Anwendungen mit Argumenten aus, die Leerzeichen enthalten, mit C system()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!