System( une_commande &);

Je suis une libellule ! -  
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..
Configuration: Linux
Firefox 1.5.0.9

5 réponses

  1. Contributeur
    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)
    1. 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à .
      1. "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!
        1. Contributeur
          OK.
          qu'est-ce qui n'allai pas avec les Spawn? ça me semblait quand même la solution la plus simple.