Salut à tous.
Dans le cadre de la création d'un gestionnaire de conenctions wifi, je dois récupérer dans mon programme C++ la sortie d'une commande (iwlist en l'occurence)
Comment faire ?
Version imprimable
Salut à tous.
Dans le cadre de la création d'un gestionnaire de conenctions wifi, je dois récupérer dans mon programme C++ la sortie d'une commande (iwlist en l'occurence)
Comment faire ?
up. personne ne sait m'aider ?
Donne plus de details, je connais pas iwlist. Comment appelles tu cette commande, donne le bout de code... bref plus de precisions, je pense que les autres sont comme moi sinon y aurait deja moultes reponses
EDIT: merde, aujourd hui je passe plus de temps a repondre qu'a bosser... c un drogue ce forum:mouarf:
peu importe iwlist.
Ce que je veux, c'est récupérer la sortie d'une commande, quelle qu'elle soit ,ca peut etre iwlist comme cat, ifconfig...
Avec exec() ou system() c'est pas possible ? :D
non, ces deux fonctions ne retournent que un entier, soit si la commande s'est bien exécutée ou non. ce n'est pas ce qu'il me faut. Il me faut le texte qu'a affiché cette commande
tu utilises Qt ?
oui. Il propose une solution pour cela ?
Pourquoi crois-tu que je me limite à répondre le soir :mouarf:Citation:
Envoyé par harsh
Sinon, sous systêmes posix tu as popen qui permet d'ouvrir un pipe (sous win32 tu dois l'avoir avec un tiret-bas devant à tous les coups) qui te permettra de récupérer le résultat de ta commande. De là tu récupères un numéro de handle. Soit tu manipules comme les fichiers C classiques. Soit tu enveloppes avec une des classes de boost.iostream pour lire avec les flux C++ standard.
aaaah... merci ! depuis le temsp que je cherche ca, et c'est aussi simple qu'en PHP...
Vraiment, merci !
si tu utilises Qt
alors utilise QProcess pour demarrer ton programme:
QProcess herite de QIODeviceCode:
1
2
3
4
5
6
7 QString program = "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; arguments << "-style" << "motif"; QProcess *myProcess = new QProcess(parent); myProcess->start(program, arguments);
tu peux donc faire des read() get() ...
ainsi que
et aussi utiliser le signal:Code:QByteArray readAllStandardOutput ()
pour savoir si il y a des datas dans le fluxCode:signal void readyReadStandardOutput ()
et/ ou utiliser
ensuite faire ce que tu veux....Code:void finished ( int exitCode, QProcess::ExitStatus exitStatus )
ah. Bien, me voila donc avec deux solutions.
Merci, vraiment ;)
... faudra nous dire laquelle tu utilises et si tu es content avec ;)
à priori j'utiliserai popen, car elle est plus générique, d'autant plus qu'elle retourne un descripteur de fichier existant en C, et il vaut donc mieux prendre l'habitude d'utiliser celle là. Sans quoi, si je ne dispose pas de Qt, je ne m'en sortirai pas.
au contraire c'est une protection sinon tu utilises des choses non portables...Citation:
Envoyé par Antoine_935
et mkfifo dans l'histoire ? ça marcherai pas vu qu'on parlait de pipe à l'origine ?
mais mkfifo c'est pas une commande bash ?
c'est portable ?
... bizarre :lun:
c'est pas qu'une fonction bash paragraphe tubes nommés ;)
et iwlist, c'est portable ? je ne crois pas : c'est un programme spécifique à linux pour voir ta config wifi alors la portabilité dans ce cas... :roll:
Ton argumeny en faveur de Qt et de la portabilité est fondé, de fait c'est mieux d'etre sur de la portabilité.Citation:
Envoyé par epsilon68
Mais dans ce cas ci, il s'agit d'un gestionnaire de wifi pour linux seulement.
de toute facon, la fonction popen doit bien exister sous windows aussi, non ?
pas de problème ;)Citation:
Envoyé par Antoine_935
en general je conseille Qt du fait de ma propre experience qui est de ne plus reinventer la roue et d'avoir une doc complete et facile d'utilisation.
L'important dans un projet, c'est de trouver des moyens d'aller plus vite et de rester concentrer sur son objectif. Qt m'aide dans cela ....
C'est aussi la logique de Kde, c'est aussi pour cette raison qu'ils avancent remarquablement vite. J'ai meme vu recemment qu'ils vont debarquer sur les autres plateformes en adaptant toute leurs librairies. Je trouve cela assez remarquable.
...
sinon je sais pas repondre a ta question sur popen sur window.
honnetement, je prefere maintenant investir mon temps sur Linux et Macos.
voila
a+