Bonjour,
Tout est dans le sujet mais je reformule :)
En gros, je cherche à faire en ada l'équivalent de la primitive système "system()" :)
Enfin un appel à system("commande"); ?
Merci pour vos réponses ;)
Fred
Version imprimable
Bonjour,
Tout est dans le sujet mais je reformule :)
En gros, je cherche à faire en ada l'équivalent de la primitive système "system()" :)
Enfin un appel à system("commande"); ?
Merci pour vos réponses ;)
Fred
system n'existe pas en Ada.
Tu peux l'importer du C si tu en as vraiment besoin:
Code:
1
2
3 function System (Cmd : Interfaces.C.Char_Array) return Interfaces.C.int; pragma Import (C, System, "system");
Les appels au systeme d'exploitation ne sont pas normalisés. Il y a différents packages qui répondent à cette question mais ils sont dépendants du systeme et du compilateur.
Pour GNAT, le package GNAT.OS_Lib fournit les primitives Spawn
blocking et non blocking qui sont un début de réponse.
Sinon voir les implémentations de POSIX
Je croyais que system etait conforme Posix. :-?Citation:
Envoyé par poincare
Je verifierai tiens.
Ada défini ses propres standards de façon à ce que le code source soit complètement portable d'un système à un autre.
Il n'est donc pas étonnant de ne pas retrouver la fonction system dans les librairies standards de Ada car la validité de la chaine passée à cette fonction dépend entièrement du système.
La fonction system est conforme à POSIX1, mais tous les système ne sont pas conforme à POSIX.
Tout a fait d'accord, avec l'utilisation d'une instruction du type :
system (commande), plus de portabilité.
En plus, je viens de vérifier dans Gnat, un Spawn ne doit pas être utilisé dans une application multitache.
Si malgré tout, il faut appeler le systeme, il faut encapsuler ces appels dans un
package spécial pour faciliter les portages. Un exemple : le serveur AWS sur le site libre.adacore