|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 39 ![]() |
Bonjour,
Je voudrais récupérer les messages d'erreur éventuel d'un script bash pour les traiter dans un programme c, le même programme qui lance le script. Je vois assez facilement comment m'y prendre en passant par un fichier mais j'aimerais si possible éviter cette option. Y'a un autre moyen et si oui lequel? merci |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 945 ![]() |
Avec Zsh, il suffit d'appeler :
Avec Bash ou sh, une solution, si tu n'as rien sur stdout : Sinon, c'est un poil plus complexe : Code :
|
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 39 ![]() |
euh pardonne moi mon ignorance mais je comprends pas trop
c quoi a.out j'ai tenté la commande tel quel pour voir le résultat et j'ai eu le droit à un bash: a.out: command not found |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 945 ![]() |
Ben, c'est ton programme C... tu l'appelles comme tu veux.
En fait, je crois que j'avais mal compris la question. C'est bien ton programme C qui exécute le script ? Dans ce cas, ce n'est pas une question de Shell, mais de C ou de système. Regarde du côté des fonctions fork, pipe, dup et dup2. Ces fonctions permettent de faire des redirections, comme le fait le Shell. A priori, fork et pipe te suffiront. |
|
|
00
|
|
|
#5 |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 497 ![]() |
Bonjour,
Si j'ai bien compris, tu lances un script dans un programme C (via par exemple l'utilisation des fonctions system ou encore exec), et tu souhaites connaître le code de retour de ce script ? Si c'est bien ca, alors il est nécessaire de passer par un fichier : ces fonctions retournent leur propre code, mais pas celui du script qu'elles lancent. |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 945 ![]() |
Ah non !
Code :
Donc, cf les fonctions fork, exec*, pipe, dup et dup2 comme je l'ai indiqué. Si je me plante pas (à vérifier donc) : il faut faire : le pipe puis un fork. Dans le fils, dup2 puis exec. Dans le père, read et close. |
||
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 39 ![]() |
j'avais pas bien compris le fonctionnement des pipes sur stdin et stdout mais ca y est j'ai pigé et en effet ca convient tres bien dans mon cas...
merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com