NewbieContest

Programmation => Langages compilés => Discussion démarrée par: haricot le 21 Septembre 2011 à 17:23:11



Titre: Passer des paramètres de C vers bash
Posté par: haricot le 21 Septembre 2011 à 17:23:11
Bonjour,

je débute en programmation, notamment en C.Dans les scripts shell que j'écris pour les épreuves de programmation, je sais passer des variables en paramètres vers un programme en C, avec un classique " programme $var1 $var2 ".Il suffit ensuite de traiter les paramètres avec argv[].
Mais voilà, pour récupérer le résultat de mon programme en C dans mon script shell, j'écris ce résultat dans un fichier.Fichier accessible et donc ensuite traité par des commandes bash.
Donc ma question: y a il un moyen plus simple de passer des variables de C vers mon shell ?, variables "globales ??" accessibles pour le bash et le C ?

Merci :wink:


Titre: Re : Passer des paramètres de C vers bash
Posté par: _o_ le 21 Septembre 2011 à 17:48:06
La question n'a pas grand chose à voir avec un passage de paramètre, en fait.

Si je comprends bien, depuis un script shell, tu appelles un exécutable (écrit en C, mais c'est accessoire), dont tu voudrais récupérer le résultat dans ton script appelant.

Je vais répondre pour bash : pour récupérer la sortie standard (i.e. ce que l'exécutable "écrit" à l'écran), on peut utiliser la syntaxe suivante :
Code:
resultat=$(/path/vers/lexecutable param1 param2)

Pour information, c'est équivalent à la syntaxe suivante, mais cette dernière est deprecated :
Code:
resultat=`/path/vers/lexecutable param1 param2`

Je passe pour l'instant (volontairement) sur la sortie d'erreur ou le code retour, car je n'ai pas l'impression que l'on soit prêt à les évoquer. Peut-être qu'un bon bouquin sur le shell pourrait aider ?


Titre: Re : Passer des paramètres de C vers bash
Posté par: haricot le 21 Septembre 2011 à 18:57:50
Oui, c'est bien ça: récupérer le résultat depuis mon script.
Un peu comme un fonction qui renverrait le résultat selon des paramètres, mais une fonction qui serait "main" si on parle C. :?
hmmm... j'ai l'impression de m'embrouiller un peu là ..., encore du chemin à faire  =) désolé si j'suis pas très clair.

Je passe 'param1' et 'param2' à l'éxécutable, dans celui-ci 'resultat' sera calculé en fonction de param1 & param2.Si 'resultat' s'affiche à l'écran, ok je le récupère avec "resultat=$(/path/vers/lexecutable param1 param2)".Mais si le calcul se fait sans affichage à l'écran, comment récupérer ce 'résultat' ?

Le moyen que j'ai trouvé, c'est de passer par un fichier intermédiaire  où j'écris mon 'resultat'.Mais bon, y a surement plus simple.
 
Sinon y a bien la solution du "tout en bash" ou "tout en C" ... :idea:


Titre: Re : Re : Passer des paramètres de C vers bash
Posté par: _o_ le 21 Septembre 2011 à 19:08:23
Mais si le calcul se fait sans affichage à l'écran, comment récupérer ce 'résultat' ?

En l'affichant à l'écran ?
Sérieusement, si tu utilises un exécutable qui ne vient pas de toi, il fournit son résultat sous une certaine forme (sortie standard, fichier, etc...) et tu dois te débrouiller avec. Mais si l'exécutable en question est écrit de ta main, le plus simple pour récupérer le résultat est la sortie standard.


Titre: Re : Passer des paramètres de C vers bash
Posté par: haricot le 21 Septembre 2011 à 20:12:09
Oui l'éxécutable est de moi, et oui je me complique la vie inutilement! Autant aller au plus simple.
Merci pour tes conseils _o_  :wink:


Titre: Re : Passer des paramètres de C vers bash
Posté par: _o_ le 22 Septembre 2011 à 08:35:48
Je voulais ajouter encore une petite chose. La sortie standard est le canal classique d'affichage des résultats (sous réserve que le résultat soit lisible par un être humain, bien entendu) sous Unix. Avec un avantage non négligeable, c'est qu'il te suffit, en shell, de "piper" les commandes entre elles pour transmettre le résultat de l'une d'elle en paramètre de la suivante.

Par exemple, la commande suivante ne fait que "connecter" l'entrée standard de wc avec la sortie standard de cURL :
Code:
curl http://google.fr | wc -l