[C/Linux] processus en background

processus en background [C/Linux] - Programmation

Marsh Posté le 27-12-2001 à 13:44:19    

Bonjour,
 
comment faut il faire pour envoyer un processus en tache de fond?
merci.

Reply

Marsh Posté le 27-12-2001 à 13:44:19   

Reply

Marsh Posté le 27-12-2001 à 19:10:43    

Tu parles de l'utilisation de fork...qui permet de dupliquer un processus (pere/fils) ?


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

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.

Reply

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...

Reply

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 &

Reply

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

Reply

Marsh Posté le 28-12-2001 à 00:13:43    

PaLoTTe a écrit a écrit :

 
tu tapes au prompt :
ta_commande &  




[:wam]  :lol:  :lol:  :lol:


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 28-12-2001 à 01:46:42    

ben  
man fork
 
(desole mais la on parle de linux
donc man :D )
 
LEGREG

Reply

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);
}

Reply

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".

Reply

Marsh Posté le 28-12-2001 à 12:56:18   

Reply

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]


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

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.


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed