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

Comment puis-je exécuter de manière fiable des programmes externes en C ?

DDD
Libérer: 2024-10-29 00:47:02
original
121 Les gens l'ont consulté

How Can I Reliably Execute External Programs in C  ?

Ouverture d'exécutables à partir d'un programme C

Vous devrez peut-être parfois exécuter des programmes externes à partir de votre propre application C. Bien que l’utilisation de system() puisse sembler une méthode simple, elle présente certains risques et limites. Cet article explore une approche plus fiable utilisant la fonction CreateProcess().

Création d'un nouveau processus

La fonction CreateProcess() vous permet de lancer un nouveau processus et d'avoir il s'exécute indépendamment de votre application appelante. Voici un exemple d'implémentation :

<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

Cette fonction prend le chemin d'accès à l'exécutable comme argument et crée un nouveau processus pour celui-ci. Le processus est ensuite exécuté indépendamment.

Utiliser efficacement CreateProcess()

Dans l'exemple de code, l'argument argv[1] doit contenir le chemin complet de l'exécutable que vous je veux lancer. Par exemple, pour exécuter "OpenFile.exe" situé dans le même répertoire que votre propre application :

<code class="cpp">startup( "OpenFile.exe" );</code>
Copier après la connexion

Éviter les erreurs

L'erreur que vous avez rencontrée lors de l'utilisation du système () résulte très probablement du fait de ne pas avoir spécifié le chemin complet de l'exécutable. CreateProcess() nécessite le chemin absolu vers le programme cible pour fonctionner correctement.

Conclusion

L'utilisation de CreateProcess() est une méthode plus sécurisée et fiable pour ouvrir des exécutables depuis l'intérieur une application C. Il vous permet de contrôler l'environnement d'exécution et d'éviter d'éventuels problèmes de sécurité.

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
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!