Maison > développement back-end > C++ > le corps du texte

Comment lancer des exécutables depuis C : une alternative plus sûre à `system()` ?

Barbara Streisand
Libérer: 2024-11-02 01:21:02
original
167 Les gens l'ont consulté

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

Lancement d'exécutables depuis C : Une alternative au système()

En C, le lancement d'un exécutable à partir d'un autre exécutable peut être réalisé en utilisant le système (), mais cette méthode pose des problèmes de sécurité et d’efficacité du système. Une approche plus robuste consiste à utiliser la fonction 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>
Copier après la connexion

Utilisation de CreateProcess() :

  1. Définissez la fonction startup() comme indiqué ci-dessus .
  2. Spécifiez le chemin d'accès à l'exécutable dans lpApplicationName.
  3. Appelez CreateProcess() pour lancer l'exécutable.
  4. Fermez le processus et les poignées de thread pour le nettoyage des ressources.

Dépannage des erreurs :

Assurez-vous que le chemin spécifié vers l'exécutable est correct. L'erreur rencontrée dans le code fourni est probablement due à un chemin d'accès non valide vers "OpenFile.exe".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!