processus en background [C/Linux] - Programmation
Marsh Posté le 27-12-2001 à 19:10:43
Tu parles de l'utilisation de fork...qui permet de dupliquer un processus (pere/fils) ?
Marsh Posté le 27-12-2001 à 20:43:46
entres autres, je pense qui doit aussi avoir une histoire avec execlp ou une fonction qui s' en rapproche.
Marsh Posté le 27-12-2001 à 21:16:09
Il me semble que lors de la creation de threads tu peux preciser leur priorite. Sinon tu fork et tu augmentes le nice...
Marsh Posté le 27-12-2001 à 22:06:19
nikewlas a écrit a écrit : Bonjour, comment faut il faire pour envoyer un processus en tache de fond? merci. |
tu tapes au prompt :
ta_commande &
Marsh Posté le 27-12-2001 à 23:37:53
çà je sais, je voulais comment on fait pour le lancer en tâche de fond à partir d' un programme en C
Marsh Posté le 28-12-2001 à 00:13:43
PaLoTTe a écrit a écrit : tu tapes au prompt : ta_commande & |
Marsh Posté le 28-12-2001 à 01:46:42
ben
man fork
(desole mais la on parle de linux
donc man )
LEGREG
Marsh Posté le 28-12-2001 à 12:55:06
Le principe est de créer volontairement un processus zombie, à une nuance près. Utilise la structure suivante pour ton programme :
zombie = fork();
if( zombie != (pid_t) 0 )
{
// processus père. On le kill pour reprendre la main.
exit(0);
}
else
{
// Le processus zombie reprend le pid du père : il redevient
// le processus principal, mais s'exécute en tâche de fond.
setsid();
// ton programme en tâche de fond.
...
...
exit(0);
}
Marsh Posté le 28-12-2001 à 12:56:18
Petite précision : maintenant, pour terminer ce processus, il faut récupérer son pid avec la command "ps" et envoyer un signal de terminaison avec "kill".
Marsh Posté le 28-12-2001 à 18:51:01
nikewlas a écrit a écrit : entres autres, je pense qui doit aussi avoir une histoire avec execlp ou une fonction qui s' en rapproche. |
Ben non en fait car les fonctions exec(l/lp/le/v/vp/ve) ne font que REMPLACER LE PROCESSUS COURANT(c'est à dire ton programme que tu as lancé sera terminé à cause de la fonction exec qui s'exécutera...et n'ira pas plus loin!)
[edtdd]--Message édité par Giz--[/edtdd]
Marsh Posté le 28-12-2001 à 20:04:35
Pour faire tourner un processus en tâche de fond je ferais:
Je crée un fork, puis dans le processus père j'apelle la fonction wait(), le père attendra donc la fin du processus fils (qui sera la tâche de fond a executer) et terminera sa tache lorsque le fils aura fini.
Marsh Posté le 27-12-2001 à 13:44:19
Bonjour,
comment faut il faire pour envoyer un processus en tache de fond?
merci.