gerer stdin

gerer stdin - C - Programmation

Marsh Posté le 27-04-2004 à 19:46:18    

Bon j'ai un probleme vraiment tres bete.
En gros je voudrait faire ca :
echo "bonjour" | ./monprog
 
mais en C.
Avec les fonction execX je peux lancer monprog sans probleme, et avec
les arguments que je veux, mais je sais pas comment faire pour lui
envoyer une chaine en entrée... c'est possible ?

Reply

Marsh Posté le 27-04-2004 à 19:46:18   

Reply

Marsh Posté le 27-04-2004 à 19:48:03    

int main( int argc, char** argv ) ???
c'est la base la quand même :heink:

Reply

Marsh Posté le 27-04-2004 à 19:55:29    

Oui merci, ca je connais bien, mais je vois toujours pas en quoi ca va m'aider. Mais bon, je me suis mal expliqué je pense :) J'ai un programme1, je veux qu'il lance un programme deux, comme le bash le ferait avec echo "bidule" | prog2
Donc oui, je sais passer des arguments a prog1, je sais lancer prog2 avec des arguments, mais je ne sais pas, a partir de prog1, gerer l'entrée standrad de prog2.
en esperant que ce soit plus clair :)

Reply

Marsh Posté le 27-04-2004 à 19:56:39    

OS ? compilateur ? stp

Reply

Marsh Posté le 27-04-2004 à 20:03:52    

alors l'os est une debian (kernel 2.14.19), et le compilateur est gcc 2.95.4


Message édité par Alana le 27-04-2004 à 20:04:23
Reply

Marsh Posté le 27-04-2004 à 20:06:37    

alana a écrit :

alors l'os est une debian (kernel 2.14.19), et le compilateur est gcc 2.95.4


 
OK .. sous windows je t'aurais dit ShellExec, regarde du coter de process() (fonction C) je crois ...

Reply

Marsh Posté le 27-04-2004 à 20:11:07    

fork() ?

Reply

Marsh Posté le 27-04-2004 à 20:12:28    

Merci a vous deux, je vais regarder ca...

Reply

Marsh Posté le 27-04-2004 à 22:14:25    

popen

Reply

Marsh Posté le 27-04-2004 à 23:49:50    

Il faut utiliser les fonctions execX comme tu mettais au début, je vois pas où est le problème!


Message édité par torpe23 le 27-04-2004 à 23:50:01
Reply

Marsh Posté le 27-04-2004 à 23:49:50   

Reply

Marsh Posté le 28-04-2004 à 02:16:32    

Ben c'est quand même un peu léger de dire « Il faut utiliser les fonctions execX ». Il faut aussi du fork et du dup2, ce qui n'a rien d'evident quand on ne l'a jamais fait.
 
Utilise popen() comme l'a dit djdie, ça fait les fork/execve/dup2 pour toi.
 
Si tu veux comprendre comment faire sans popen, regarde là : http://www.gnu.org/software/libc/m [...] ing%20Jobs

Reply

Marsh Posté le 28-04-2004 à 08:33:12    

Merci bcp :)

Reply

Marsh Posté le 28-04-2004 à 09:25:35    

matafan a écrit :

Si tu veux comprendre comment faire sans popen, regarde là : http://www.gnu.org/software/libc/m [...] ing%20Jobs


 
merci du lien, je mourrais moins bête :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed