begin process at 2012 02 12 06:32:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

processus arriere/avant plan non zombie! - c/linux


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

processus arriere/avant plan non zombie! - c/linux

vendredi 31 décembre 2004 à 14:08:27 | processus arriere/avant plan non zombie! - c/linux

davidauche

Bonjour a tt monde,
je ne comprends pas trop ça :
"Les processus lancés en arrière-plan et terminés ne doivent pas rester zombie mais leur terminaison doit être prise en compte par le shell (ou le programme principal - main)."

Qlqn d'entre vous peut m'expliquer ça, et surtout un simple exemple (avec un contre exemple si possible) pour mieux comprendre.

PS : en c/c++ sous linux.

merci bq d'avance.
vendredi 31 décembre 2004 à 14:50:34 | Re : processus arriere/avant plan non zombie! - c/linux

plus_plus_fab

"Les processus lancés en arrière-plan et terminés ne doivent pas rester zombie mais leur terminaison doit être prise en compte par le shell (ou le programme principal - main)."*

c'est incompréhensible effectivement. Qui a pondu ça ?
Je pense que cette personne a voulu dire que le processus pere doit attendre la terminaison de son fils, s'il ne l'attend plus, le processus fils devient zombie.
vendredi 31 décembre 2004 à 15:04:54 | Re : processus arriere/avant plan non zombie! - c/linux

davidauche

merci,
non je ne pense pas ça, il parle sur : "Les processus lancés en arrière-plan et terminés", comme sous linux quand on lance emacs par exemple avec "emacs &", puis apres moments si on le ferme il nous affiche un ti message ([id] + done). bah si je ne me trompe pas !!?!, mais je ne sais pas comment faire ça aussi :(
svp aidez moi!
merci bq.
vendredi 31 décembre 2004 à 15:24:56 | Re : processus arriere/avant plan non zombie! - c/linux

plus_plus_fab

comment faire quoi ?
Dans ton exemple, emacs& peut jouer le role du fils et le shell, du pere.
vendredi 31 décembre 2004 à 15:45:23 | Re : processus arriere/avant plan non zombie! - c/linux

garslouche

Ca ressemble à un mauvais cours de système ça...

Les processus lancés en arrière-plan (avec le &) ne sont rien d'autre que des fork() donc des processus fils. Je suis d'accord avec ++fab : en clair quand il y a un shell et qu'on lance des applis en arriere-plan, ce sont des processus fils et donc il faut faire attention à ne pas faire de zombie.

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
samedi 1 janvier 2005 à 14:45:02 | Re : processus arriere/avant plan non zombie! - c/linux

davidauche

lol, c'est pas un cours, mais un exo :p
"donc il faut faire attention à ne pas faire de zombie" et comment faire ça?

pour emacs par exemple : quand on lance avec & (en arriere plan), apres quand on le ferme il nous affiche .[pid] +Done!
comment programmer ça?! avec signal?!

autre question : comment faire passer un processus de forground à background et inversement!

merci pour tt info

a++
samedi 1 janvier 2005 à 16:03:46 | Re : processus arriere/avant plan non zombie! - c/linux

plus_plus_fab

"donc il faut faire attention à ne pas faire de zombie" et comment faire ça?
attendre le fils avec wait ou waitpid.

"comment programmer ça?! avec signal?!"
#include <signal.h>
#include <stdio.h>
#include <errno.h>

void term(int sig)
{
printf("signal %d reçu\n",sig);
exit(0);
}

int main()
{
if (signal(SIGTERM,term) == SIG_ERR) {
perror("erreur signal");
exit(-1);
}
// fait qq chose ...
}

"autre question : comment faire passer un processus de forground à background et inversement!"
avec le shell, commandes fg et bg.
samedi 1 janvier 2005 à 16:14:04 | Re : processus arriere/avant plan non zombie! - c/linux

davidauche

merci
pour fg et bg j'aime le faire en c, car je suis en train de programmer un shell ;)
merci
samedi 1 janvier 2005 à 18:03:32 | Re : processus arriere/avant plan non zombie! - c/linux

Nashua

Le zombie est un process qui a perdu sont pere et ne sait pas comment s'attacher a init. Comme le dit ++fab il suffit en theorie que le pere fasse un wait() ou waitpid() helas ce n'est pas si simple il faut aussi que le pere soit immunise contre les signaux en installant un handler pour ceux-ci. Le core dump helas ne peut pas etre intercepte. Il faut donc que le pere soit bug free!. Pour le kill -9 du pere, le fils sera tue aussi ce n'est peut etre pas ce que l'on veut obtenir.

Pour la seconde part de la question fg/bg ce n'est pas si simple. Je comprend qu'il est question de changer le comportement du process en cours d'execution de le passer en fg ou en bg par un moyen externe ( un signal envoye du shell pour passer de bg en fg et une combinaison de touche pour passer de fg en bg).
Le bg consiste a deconnecter le process de stdin ( on conserve cependant stderr et stdout) a deconnecter le controlling tty et eventuellement a l'attacher au process init . On peut prevoir une routine dans le process qui sera activee par l'appui de touches et deconnectera stdin.
le Fg est un peut plus complique mais on peut lancer a partir du shell un signal qui reconnectera le process a stdin (kill USR1 my_process_id).
Vaste sujet ......
Yves


Yves

dimanche 2 janvier 2005 à 14:25:55 | Re : processus arriere/avant plan non zombie! - c/linux

davidauche

Merci Yves,
je demande svp de me donner un code qui fera les taches de bg/fg, car vraiment je me galère depuis moments :(, je dois le faire mais j'arrive pas :(, j'ai essayer avec kill et les signal, ça marche pas, je me suis bloquer dans tt les sens!!
svp aidez moi!
a+

1 2

Cette discussion est classée dans : plan, linux, processus, arriere, zombie


Répondre à ce message

Sujets en rapport avec ce message

c++ - Lister les processus sous linux [ par kriss51 ] Bonjour à tous,Je suis sous l'environnement LINUX et je tente en C++ de lister tous les processus s'exécutant sur la machine.Savez-vous comment faire Programme fonctionnant en arriere plan [ par bdkiller ] Bonjour, je cherche a faire un programme qui va fonctionner en arriere plan, cad je crée un controlleur de winamp, et j'utilise ceci comme code: (je s application en arriere plan [ par flatmax ] salutje viens de faire une application (dos) et j'aimerais que cette appli tourne en arriere-plan, sans avoir besoin d'etre active.je m'explique, j'ai processus sous linux [g++] [ par satanik_mike ] Bonjour,Je suis en train de d?velopper un serveur POP, SMTP en C++ sous linux, mais je bloque sur une petit probl?me d'ex?cution.J'ai fait un ex?cutbl le "kill(0,SIGTERM)" de Linux sous Win32 ? [ par Wulfaz ] je cherche une fonction C pour winNT & win98, équivalente à celle sous Linux/Unix : kill(0,SIGTERM). Pour ceux qui ne la connaisse pas elle envoie un temps d'exécution d'un processus (c/linux) [ par davidauche ] bonjour a tt monde,comment calculer le temps d'exécution d'un processus en c sous linux!?j'essaie avec time et times  + struct tms marche pas! tjrs me Permettre à un processus de travailler en arrière plan [ par Pingouin57 ] Salut à tous, Enfait, ce que j'aimerais faire, c'est de pouvoir "cacher" un autre processus pour qu'il travaille en arrière-plan. En C++, rien de p linux : renommer processus [ par wazox ] Bonjour, je cherche le moyen pour qu'un processus puisse renommer son nom tel qu'il apparait avec la commande ps. J'ai essayé en modifiant argv[0] dir question sur programmation linux [ par yolhaiji ] YOL.HAI.JIsalut:je voulais savoir comment sur linux peut on etablir une connexion entre un processus pere et ces deux processus fils avec les pipes ( Dialoguer en arriere plan? [ par supergrey ] Salut, je voudrais savoir comment en voyer du texte (des touches frappée) a une edit box située sur une fenetre ne arriere plan. Esta posibilé???


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,278 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales