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   -
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
A voir également:

3 réponses

teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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 8854 Statut Modérateur 1 526
 
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 161 Date d'inscription   Statut Membre Dernière intervention   1
 
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