> Tech > Exécuter des commandes avec la fonction system()

Exécuter des commandes avec la fonction system()

Tech - Par iTPro - Publié le 24 juin 2010
email

Il est courant d’utiliser l’API QCMDEXC ou QCAPCMD pour exécuter une commande CL à partir d’un programme RPG.

Cependant, il sera souvent plus commode d’utiliser une fonction de bibliothèque runtime C appelée system() pour accomplir la même chose. La fonction system() passe une chaîne

de commandes au processeur de commandes sans qu’il soit nécessaire de passer la longueur de la chaîne de commandes – ou tout autre paramètre en la circonstance. Pour appeler la fonction system(), passez-lui simplement un pointeur vers la chaîne de commandes. La figure 11 montre le prototype suggéré (avec quelques H-specs nécessaires). Quand le moment est venu pour votre programme d’exécuter une commande, vous pouvez faire référence au prototype. La chaîne de commandes peut être une variable, un littéral, une constante nommée ou une expression. La figure 12 montre une utilisation classique.

Le code return permet de vérifier la réussite ou l’échec de la fonction system(). Il est zéro si la commande a réussi, ou 1 si elle a échoué. Si vous passez un pointeur null à une chaîne, system() renvoie -1 et le processeur de commandes n’est pas appelé.

 Si la fonction system() échoue (c’est-à-dire si le code return est 1), elle définit une variable globale _EXCP_MSGID avec l’ID message CPF. Vous pouvez importer cette variable dans votre programme pour rechercher des erreurs spécifiques (figure 13).

Pour utiliser la fonction system(), vous devez faire référence au répertoire liant QC2LE lors de la compilation et/ou du lien du programme. Les exemples nomment QC2LE dans les Hspecs.

Par Bryan Meyers

Téléchargez cette ressource

Guide de cybersécurité en milieu sensible

Guide de cybersécurité en milieu sensible

Sur fond de vulnérabilités en tout genre, les établissements hospitaliers, pharmacies, laboratoires et autres structures de soin font face à des vagues incessantes de cyberattaques. L’objectif de ce livre blanc est de permettre aux responsables informatiques ainsi qu’à l’écosystème des sous-traitants et prestataires du secteur médical de se plonger dans un état de l’art de la cybersécurité des établissements de santé. Et de faire face à la menace.

Tech - Par iTPro - Publié le 24 juin 2010