Invite de commandes ...

Invite de commandes ... - C++ - Programmation

Marsh Posté le 27-08-2004 à 22:32:17    

Hello all
 
Je voudrais savoir comment, en C++, car il me semble que c'est possible, de récupérer le texte que me renvoie l'invite de commandes après une commande.
Par exemple si je fais "ping lesite.com" je voudrais récupérer le texte que me renvoie l'invite !
 
J'espère avoir été clair, bonn soirée à tous ;) et merci de vos réponses ++

Reply

Marsh Posté le 27-08-2004 à 22:32:17   

Reply

Marsh Posté le 27-08-2004 à 22:39:39    

int main(int argc, char *argv[]

Reply

Marsh Posté le 27-08-2004 à 22:41:16    

Taz a écrit :

int main(int argc, char *argv[]


non


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 27-08-2004 à 22:56:45    

ben ... comment alors ?

Reply

Marsh Posté le 27-08-2004 à 22:59:49    

ah merde
 
man popen
man fork
man pipe
man exec

Reply

Marsh Posté le 28-08-2004 à 00:50:17    

Les fonctions varient en fonction de l'OS, mais le principe est le même : tu rediriges les flux standards du process lancé avec des pipes. Précises l'OS.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 28-08-2004 à 01:01:46    

Os => Windows xp

Reply

Marsh Posté le 28-08-2004 à 01:24:33    

excusez moi mais.. pourquoi le premier truc posté par Taz va pas ?
c'est pas du C++ c'est pour ça ?

Reply

Marsh Posté le 28-08-2004 à 01:32:37    

si sa en est ( je pense) je suis sur a 70% mais bon de oute facon je suis pas competant snif :jap:

Reply

Marsh Posté le 28-08-2004 à 03:21:39    

regarde la doc de CreateProcess (msdn), me semble que dans une structure passée en param tu peux spécifier les flux que le processus fils utilisera.


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 28-08-2004 à 03:21:39   

Reply

Marsh Posté le 28-08-2004 à 10:10:17    

raytaller a écrit :

excusez moi mais.. pourquoi le premier truc posté par Taz va pas ?
c'est pas du C++ c'est pour ça ?


Le truc de Taz c'est pour récupérer les arguments: ping www.lesite.com... mais pas ce qui est affiché dans la console après .

Reply

Marsh Posté le 28-08-2004 à 10:17:35    

BlackGoddess a écrit :

regarde la doc de CreateProcess (msdn), me semble que dans une structure passée en param tu peux spécifier les flux que le processus fils utilisera.


 
oui ca c'est le mieux, mais on peut rester dans  le portable et  faire simple en utilisant fopen, le standard posix est porté sous win (enfin moi j'utilise ca avec devcpp)

Reply

Marsh Posté le 28-08-2004 à 14:37:10    

WhatDe a écrit :

Le truc de Taz c'est pour récupérer les arguments: ping www.lesite.com... mais pas ce qui est affiché dans la console après .


oui ok, il suffisait de savoir lire. merci.

Reply

Marsh Posté le 28-08-2004 à 18:55:47    

Deimos_, y'a 2 solutions
- tu te fais chier avec les pipes pour récupérer la sortie de ping.exe
http://support.microsoft.com/defau [...] -us;190351
- tu fais le ping toi même
http://msdn.microsoft.com/library/ [...] ndecho.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 28-08-2004 à 20:01:02    

Tiens je ne savais pas que cette fonction existait sous wintruc, merci ;)
Y en a d'autres des fonctions de ce niveau ?
Car de mémoire j'avais lu qu'il n'y avait pas d'acces au niveau IP dans l'interface win ...
Je chercherai ...


Message édité par cricri_ le 28-08-2004 à 20:09:17
Reply

Marsh Posté le 29-08-2004 à 02:28:17    

Ouais thx helloworld mais le ping c'était un exemple ! Je devrais pouvoir récupérer nimporte quelle réponse a une ommande, comme "help" sous windoxws, etc

Reply

Marsh Posté le 29-08-2004 à 09:45:20    

Code :
  1. system("ping www.lesite.com > file.txt" );
  2. FILE* fopen("file.txt", "r" );


:D

Reply

Marsh Posté le 29-08-2004 à 15:23:45    

Crici_> on peut faire pas mal de trucs avec les Raw Socket, et puis y'a l'IP Helper API :
http://msdn.microsoft.com/library/ [...] t_page.asp
Deimos_> ce que propose Ace17 est incomplet car il faut attendre la fin de l'exécution du process lancé. Mieux vaut créer le fichier soit même (CreateFile) et passer son handle en tant que stdout via CreateProcess (solution de BlackGoddess). Idem avec stderr (si tu veux le même fichier pour les 2, il faut dupliquer le handle => DuplicateHandle). CreateProcess te donne le handle du process lancé, tu peux attendre qu'il ait fini avec WaitForSingleObject et alors aller lire dans le fichier créé.
L'autre solution plus complexe c'est de filer des pipes (cf le lien donné).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 30-08-2004 à 22:31:59    

Deimos_ ->
 
Tu fais rentrer dans le main comme sa.
 
int main (int argv, char *argc[])
{
   ...
}
 
 
Si ton application s'appele supp, et que tu veux agir sur toto.txt.
Dans une fençetre dos tu tappe "supp tot.txt".
 
Tu as sa :
argc[0] = "supp";
argc[1] = "toto.txt";
 
C'est du ANSI.

Reply

Sujets relatifs:

Leave a Replay

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