Heim > Backend-Entwicklung > C++ > Hauptteil

Wie starte ich ausführbare Dateien von C: Eine sicherere Alternative zu „system()'?

Barbara Streisand
Freigeben: 2024-11-02 01:21:02
Original
242 Leute haben es durchsucht

  How to Launch Executables from C  :  A Safer Alternative to `system()`?

Ausführbare Dateien aus C starten: Eine Alternative zu system()

In C kann das Starten einer ausführbaren Datei aus einer anderen ausführbaren Datei mithilfe des Systems erreicht werden ()-Funktion, aber diese Methode wirft Bedenken hinsichtlich Sicherheit und Systemeffizienz auf. Ein robusterer Ansatz beinhaltet die Verwendung der Funktion „CreateProcess()“.

<code class="cpp">#include <windows.h>

void startup(LPCTSTR lpApplicationName) {
   STARTUPINFO si;
   PROCESS_INFORMATION pi;

   ZeroMemory(&si, sizeof(si));
   si.cb = sizeof(si);
   ZeroMemory(&pi, sizeof(pi));

  CreateProcess(lpApplicationName, 
         argv[1], 
         NULL, 
         NULL, 
         FALSE, 
         0, 
         NULL, 
         NULL, 
         &si, 
         &pi
    );
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}</code>
Nach dem Login kopieren

Verwendung von „CreateProcess()“:

  1. Definieren Sie die Funktion „startup()“ wie oben gezeigt .
  2. Geben Sie den Pfad zur ausführbaren Datei in lpApplicationName an.
  3. Rufen Sie CreateProcess() auf, um die ausführbare Datei zu starten.
  4. Schließen Sie Prozess- und Thread-Handles zur Ressourcenbereinigung.

Fehlerbehebung:

Stellen Sie sicher, dass der angegebene Pfad zur ausführbaren Datei korrekt ist. Der im bereitgestellten Code aufgetretene Fehler ist wahrscheinlich auf einen ungültigen Pfad zu „OpenFile.exe“ zurückzuführen.

Das obige ist der detaillierte Inhalt vonWie starte ich ausführbare Dateien von C: Eine sicherere Alternative zu „system()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage