Comment connaitre [fin processus]

Fermé
cathan Messages postés 160 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 30 mars 2007 - 7 mars 2006 à 12:37
cathan Messages postés 160 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 30 mars 2007 - 8 mars 2006 à 07:12
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

3 réponses

teebo Messages postés 33478 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 795
7 mars 2006 à 16:11
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)
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 524
7 mars 2006 à 16:26
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.
0
cathan Messages postés 160 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 30 mars 2007 1
8 mars 2006 à 07:12
merci beaucoup, je vais essayé de voir comment fonctionne les fonctions citées ci dessus et je vous tiens au courant, sinon serait il possible aussi de récuperer le nom de la fenetres des applications lancer ? merci encore
0