Comment connaitre [fin processus]
cathan
Messages postés
161
Date d'inscription
Statut
Membre
Dernière intervention
-
cathan Messages postés 161 Date d'inscription Statut Membre Dernière intervention -
cathan Messages postés 161 Date d'inscription Statut Membre Dernière intervention -
Bonjour all, je sais que je devrais poser cette question dans le forum programmation mais il n'y a pas beaucoup de monde qui utilise linux là bas.
Est ce qu'il est possible depuis QT de savoir qu'un processus que je lance avec la commande system("cp /home/00 /home/11 &") est términé ? si j'enleve le & mon program reste figer jusqu'à la fin du commande system("") alors que j'ai envie de mettre un petit progressbar pendant l'execution de la commande system("") et qui s'arrete à la fin du commande. Merci à tous
Est ce qu'il est possible depuis QT de savoir qu'un processus que je lance avec la commande system("cp /home/00 /home/11 &") est términé ? si j'enleve le & mon program reste figer jusqu'à la fin du commande system("") alors que j'ai envie de mettre un petit progressbar pendant l'execution de la commande system("") et qui s'arrete à la fin du commande. Merci à tous
A voir également:
- Comment connaitre [fin processus]
- Fin des zfe - Guide
- Fin numericable - Accueil - Box & Connexion Internet
- Fin de la 4g en france - Accueil - Guide opérateurs et forfaits
- Fin de fruitz - Accueil - Applications & Logiciels
- Chambre 1408 explication fin - Forum Cinéma / Télé
3 réponses
Salut,
La première solution qui me vient à l'esprit c'est de regarder dans la liste des process si cp y est toujours ou pas...
Mais le problème c'est que si tu as quelqu'un d'autre ou quelque chose d'autre qui fait un cp tu attendras que lui aussi ai fini.
Sinon il me semble qu'il y avait un moyen de récupérer le numéro de process lors du démarrage d'un process (note que je ne connais pas qt, je parle au niveau script)
La première solution qui me vient à l'esprit c'est de regarder dans la liste des process si cp y est toujours ou pas...
Mais le problème c'est que si tu as quelqu'un d'autre ou quelque chose d'autre qui fait un cp tu attendras que lui aussi ai fini.
Sinon il me semble qu'il y avait un moyen de récupérer le numéro de process lors du démarrage d'un process (note que je ne connais pas qt, je parle au niveau script)
Sinon il me semble qu'il y avait un moyen de récupérer le numéro de process lors du démarrage d'un process (note que je ne connais pas qt, je parle au niveau script)
Yep, avec fork()
Si tu utilises fork() à la la place de system, tu pourras récupérer l'id du processus que tu lances. Ensuite avec waitpid() tu peux suspendre l'execution du processus principal en attendant que le processus fils se termine (et donc eventuellement changer la valeur d'une variable lorsque le processus fils est terminé pour le signaler à ta barre de progression qui peut être dans un autre thread.
La barre de progression peut être lancée dans un thread, ce thread ne sera pas en attente contrairement au thread principal. Voir la partie NOTES du man waitpid() :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/waitpid.2.html
Ou bien tu laisses ta barre de progression dans le thread principal et tu crées un thread pour lancer ton programme fils et utiliser waitpid.
Yep, avec fork()
Si tu utilises fork() à la la place de system, tu pourras récupérer l'id du processus que tu lances. Ensuite avec waitpid() tu peux suspendre l'execution du processus principal en attendant que le processus fils se termine (et donc eventuellement changer la valeur d'une variable lorsque le processus fils est terminé pour le signaler à ta barre de progression qui peut être dans un autre thread.
La barre de progression peut être lancée dans un thread, ce thread ne sera pas en attente contrairement au thread principal. Voir la partie NOTES du man waitpid() :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/waitpid.2.html
Ou bien tu laisses ta barre de progression dans le thread principal et tu crées un thread pour lancer ton programme fils et utiliser waitpid.