Bonsoir tout le monde !
J’ai une petite question en c j’espère qu’un de vous pourra m’aider
Via system(); je peux lancer des commandes dans mon shell. Je peux même envoyer des variables. Le problème est que quand je fais telnet sa m’ouvre ma connexion telnet et pas moyen d’écrire après dans telnet (j’espère être pas trop confu dans c’que j’écris).
Par exemple
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf(Hello world!\n\);
char *buffer = telnet\nopen smtp.blabla.com 25;
system(buffer);
return 0;
}
j’ai essayé de plusieuurs façon rien ne passe … Pourtant quand je rentre les commandes dans mon shell sa fonctionne…
Sur windows j’ai le message suivant dans mon shell
et sous Ubuntu
Si quelqu’un à une solution ^^’,
Merci d’avance.
Message edité le 08/06/2007 à 19:45
Normal.
Quand tu es dans telnet, il attend tes entrées.
Quand tu appelles system() il cherche un fichier à exécuter.
Il ne le fait qu’une ligne à une ligne.
Pour que ça fonctionne, fait un tour du côté de fork() et de pipe().
(et je m’en souviens pas assez pour t’aider plus sur fork() & pipe())
Vu l’utilisation de la fonction system à mon avis pas beaucoup de possibilités sauf peut-être procéder comme suis
Modifier ton programme d’une telle manière
#include <stdio.h>;
#include <stdlib.h>;
int main()
{
printf(“Hello world!\n”);
char *buffer = “telnet smtp.blabla.com 25 < fichier.txt”;
system(buffer);
return 0;
}
Et mettre les commandes dans le fichier “fichier.txt”
Cela devrais fonctionner et si ça ne fonctionne pas à mon avis l’utilisation de fork() dup() et pipe() s’impose
PS : Notez que je n’utilises plus les balises [code] car elles rendent le code quasi illisible
Edité le 08/06/2007 à 20:26
Merci beaucoup à vous deux , je me renseigne sur fork et pipe
La je vais testé ta solution Philouvb
Merci encore
Edit: Erf le fichier.txt ne fonctionne pas ^^’
Edité le 08/06/2007 à 20:29
Alors pas le choix tu devras utiliser
-fork()
-dup()
ce sera un minimum je pense !
Ok je vois ^^’
Bon je laisse tombé cette solution qui me semble tiré par les cheveux je vais reprendre les sockets
Merci encore
ben c’est la même façon de faire hein