System( une_commande &);

Fermé
Je suis une libellule ! - 6 févr. 2007 à 06:34
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 7 févr. 2007 à 09:07
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..

5 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
6 févr. 2007 à 08:53
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)
0
Je suis une libellule !
6 févr. 2007 à 09:49
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à .
0
Je suis une libellule :)
6 févr. 2007 à 21:27
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 :)
0
Je suis une libellule :)
7 févr. 2007 à 00:21
"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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
7 févr. 2007 à 09:07
OK.
qu'est-ce qui n'allai pas avec les Spawn? ça me semblait quand même la solution la plus simple.
0