Ce sujet est résolu.
12 | |||
Auteur | Messages | ||
---|---|---|---|
valaquarus | #1 Posté le 11/3/2021 à 11:33:33 | ||
-- Unus Ex Altera -- | Bonjour à tous, dans un programme comment récupérer pour affichage, par exemple dans un textArea, l'information de l'avancée d'un travail, pas les erreurs, lancé par une commande shell dans un terminal? Je n'arrive pas à le faire en temps réel. Philippe. Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||
vuott | #2 Posté le 11/3/2021 à 19:42:39 | ||
Ne cedere ineluctabili possimus | Tu pourrais utiliser les ressources de la classe "Process".
« Vita non suavis esse potest, nec Mors amara. » | ||
valaquarus | #3 Posté le 11/3/2021 à 20:21:03 | ||
-- Unus Ex Altera -- | Merci Vuott, mais ce n'est pas ce que je veux car ça, je sais l'utiliser et cela fourni les informations sur le résultat du processus en cours mais j'aimerais obtenir des informations, non sur ce que fais le processus, mais où il en est de son traitement total, par exemple, lui faire indiquer : "je commence mon traitement", "je viens de finir 20% de mon traitement", etc.. En fait comment suivre en temps vraiment "réel" le traitement du processus et non pas le résultat de ce qu'il produit. Philippe. Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||
vuott | #4 Posté le 12/3/2021 à 14:08:01 | ||
Ne cedere ineluctabili possimus | ehmmm... je pense qu'il faut évidemment savoir ce que le programme externe doit faire et ce qu'il fait à chaque instant. « Vita non suavis esse potest, nec Mors amara. » | ||
valaquarus | #5 Posté le 12/3/2021 à 16:02:37 | ||
-- Unus Ex Altera -- | Vuott, le problème est bien de suivre un processus dans son déroulé mais celui-ci te renvoie les infos quand il veut sur la console et surtout quand il y a des erreurs ou bien quand il a fini ; sur un traitement relativement long c'est barbant à suivre j'aimerais le rendre un peu plus bavard pour ne pas dire verbeux. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||
vuott | #6 Posté le 12/3/2021 à 17:16:53 | ||
Ne cedere ineluctabili possimus | ...mais celui-ci te renvoie les infos quand il veut sur la console et surtout quand il y a des erreurs ou bien quand il a fini Je suppose que cela dépend du programme externe, qui envoie les informations à "Standard Output" ou à "Standard Error" selon les dispositions spécifiques de son code. « Vita non suavis esse potest, nec Mors amara. » | ||
valaquarus | #7 Posté le 13/3/2021 à 18:02:34 | ||
-- Unus Ex Altera -- | Bonsoir Vuott,
Tu vois j'utilise bien la classe process mais je peux attendre longtemps avant que le textArea affiche quelque chose et cela peut être perturbant pour l'utilisateur. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||
valaquarus | #8 Posté le 13/3/2021 à 18:16:43 | ||
-- Unus Ex Altera -- | Vuott a écrit : Je n'ai pas encore creusé de ce côté mais c'est à l'évidence en regardant ce que fait le programme appelé par le shell que peut être je peux récupérer des informations à afficher pour l'utilisateur pour qu'il ait bien l'impression que son programme est encore en vie, le curseur d'attente c'est pas cool au bout d'un moment. Philippe. Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||
spheris | #9 Posté le 14/3/2021 à 18:26:11 | ||
je ferais ça :
et ça marche : http://gambaslinux.fr/articles.php?lng=fr&pg=289 | |||
valaquarus | #10 Posté le 16/3/2021 à 07:50:06 | ||
-- Unus Ex Altera -- | Bonjour à tous, oui Sphéris ça aussi fonctionne mais j'ai besoin de récupérer certaines informations bien ciblées que renvoie la commande lancée par le shell et donc de toutes les ranger ligne par ligne dans le textArea. De plus la commande ne renvoie que les informations que l'on sélectionne avant de lancer la commande par le shell donc c'est Vuott qui a pleinement raison, il faut aller chercher du côté de la commande qui elle est une commande que je qualifierais de commande à tiroir car il n'y a pas qu'une action entreprise par celle-ci mais bien plusieurs et donc il faut soit que je me forme à cette commande soit que je contourne le problème en affichant dans un deuxième terminal un "truc" qui occupe visuellement l'utilisateur genre horloge qui défile ou # qui s'incrémente. Et comme mon objectif premier (et que je suis très fainéant) était de montrer que le logiciel était en fonction pendant tout le temps du traitement qui peut être vraiment lent, vous aurez compris que je vais utiliser cet artifice qui matérialise le temps qui passe. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||
vuott | #11 Posté le 16/3/2021 à 14:52:43 | ||
Ne cedere ineluctabili possimus | La solution classique, proposée par notre ami spheris, n'offre des informations qu'au début du processus du programme externe, mais pas pendant son fonctionnement. « Vita non suavis esse potest, nec Mors amara. » | ||
valaquarus | #12 Posté le 16/3/2021 à 17:34:02 | ||
-- Unus Ex Altera -- | Bonsoir,
Voilà bêtement mon tourne autour du problème. Si vous n'avez pas de commentaires supplémentaires je passe le sujet en résolu. Philippe. C'était pour faire avancer le smilblich. Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||
spheris | #13 Posté le 17/3/2021 à 19:44:40 | ||
Pardon, je n'avais pas bien lu la question. Une piste : Ton appli externe n'a-t-elle pas une option à passer en ligne de commande genre '-s'(step by step) '-d' (detail), etc...? | |||
valaquarus | #14 Posté le 18/3/2021 à 14:17:01 | ||
-- Unus Ex Altera -- | Bonjour Sphéris, oui et non, en fait c'est une commande plurielle qui réalise plusieurs opérations les unes à la suite des autres, il s'agit de clamscan de clamav que l'on peut régler pour qu'elle "parle" mais là on a un très long discours pas toujours clair sur l'état d'avancement des fichiers traités. Philippe PS. : tu avais une idée derrière la tête en parlant de : Ton appli externe n'a-t-elle pas une option à passer en ligne de commande genre '-s'(step by step) '-d' (detail), etc...? Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5 | ||
spheris | #15 Posté le 21/3/2021 à 19:42:27 | ||
J'ai trouvé. La commande WATCH sous linux te permet de faire ce que tu demandes. Exemple tiré d'un site pour la commande dd par exemple avec actualisation toutes les 30 secondes: terminal (en root): kill -USR1 9999 Cette seconde commande peut-être lancée de temps en temps pour patienter. Alternative en mode root, pour voir la progression toutes les 30 secondes: watch -n 30 kill -USR1 9999 Edition du message : En fait non, cela ne marche pas correctement. Il suffit d'utiliser la commande pv qui elle fonctionne très bien : voir ici : https://www.linuxtricks.fr/wiki/pv-avoir-des-informations-sur-le-temps-d-une-tache | |||
12 |