System( une_commande &);
Je suis une libellule !
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour au bleu pays et à ses habitants. :)
Je suis confronté a un petit problème de tâche sous Linux.
En effet je programme en C un petit bout de code qui doit a un moment donné lancer un programme tout en continuant a tourner.
Ce petit programme est mplayer ("mplayer -msglevel all=-1 "addresse d'un flux" ) et pour le moment (moment très bof) je fais comme ceci :
system ( mplayer_blabla & );
Ce qui marche bien :
-Effectivement mplayer_blabla se lance en tâche de fond, et mon programme continu a tourner.
Ce que je ne sais pas faire :
Arrêter mplayer_blabla.
Deplus la commande 'jobs' ne me renvoie rien du tout.
Pour le moment mes tests ne peuvent que se terminer a coup de KILLALL mais on éteint pas une marguerite avec un allume cigare.
Voilà, je ne sais pas trop comment m'en tirer. Peut-être existe-t'il une autre solution que de passer par la fonction system(); , ou vaut'il mieux faire appel directement a Gstreamer.
Je prend tout !
Merci d'avance
bzzzzZZZZzz..
Je suis confronté a un petit problème de tâche sous Linux.
En effet je programme en C un petit bout de code qui doit a un moment donné lancer un programme tout en continuant a tourner.
Ce petit programme est mplayer ("mplayer -msglevel all=-1 "addresse d'un flux" ) et pour le moment (moment très bof) je fais comme ceci :
system ( mplayer_blabla & );
Ce qui marche bien :
-Effectivement mplayer_blabla se lance en tâche de fond, et mon programme continu a tourner.
Ce que je ne sais pas faire :
Arrêter mplayer_blabla.
Deplus la commande 'jobs' ne me renvoie rien du tout.
Pour le moment mes tests ne peuvent que se terminer a coup de KILLALL mais on éteint pas une marguerite avec un allume cigare.
Voilà, je ne sais pas trop comment m'en tirer. Peut-être existe-t'il une autre solution que de passer par la fonction system(); , ou vaut'il mieux faire appel directement a Gstreamer.
Je prend tout !
Merci d'avance
bzzzzZZZZzz..
Configuration: Linux Firefox 1.5.0.9
5 réponses
-
Salut.
regarde du coté de exec ou plutôt de "spawn"
https://docs.microsoft.com/en-us/
ça fonctionne sous windows et aussi sur linux.
Sinon, tu peux passer par un thread contenant un exec, et lorsque tu veux tuer le processus, tu tue le thread (sans garantie) -
Merci :)
Je suis allé y faire un tour et oulà ! Après le dodo ce sera mieux je pense .
Je vous tiendrai au courant de la chose. Voilà . -
Bonjour,
je viens de tomber sur ceci :
http://pages-perso.luminy.univ-amu.fr/erreur.php?code=404
Donc les thread, c'est ce que je cherchais.
Maintenant que j'ai le mot clé je vais pouvoir avancer :)
Merci encore, et joyeux futur mi de l'an :) -
"Sinon, tu peux passer par un thread contenant un exec, et lorsque tu veux tuer le processus, tu tue le thread (sans garantie) "
Le problème c'est que pour tuer le thread je n'ai vu que deux solutions :
1 : Le thread se suicide avec pthread_exit .
2 : Un aute thread (ou le père) le tue avec pthread_setcancelstate .
Mais dans les deux cas le thread qui va être tué teste les conditions d'appel a sa destruction.
Hors si je lance un exec dans le thread, celui-ci sera bloqué tant que l'exec ne sera pas terminé.
Donc je vois deux solutions : (http://pficheux.free.fr/articles/lmf/threads/
1 : Je trouve le moyen de parler cet exec pour lui fournir en paramètre ce qu'il a l'habitude de recevoir.
2 : J' RTFM Gstreamer pour implémenter dans mon thread un lecteur made in moi ; solution alternative élégante certes, mais de mon niveau ? Je ne sais pas.
Voili voilouche . COIN! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
OK.
qu'est-ce qui n'allai pas avec les Spawn? ça me semblait quand même la solution la plus simple.