IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Programme en c qui exécute une commande en arriere plan


Sujet :

Linux

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Programme en c qui exécute une commande en arriere plan
    Bonsoir, dans le cadre d'un projet d'implémentation d'un mini shell, je dois écrire un programme en c qui exécute une commande en arrière plan.
    J'ai écrit quelque chose mais ça n'a pas le résultat escompté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    int execute_commande_BG(Expression *e){
    	pid_t pid = 0;
    	int status = 0;
     
    	struct sigaction action;
    	action.sa_flags = 0;
    	action.sa_handler =  SIG_DFL;
    	sigemptyset(&action.sa_mask);
     
    	switch(pid){
    		case (pid_t) -1:
    			erreur_creation_processus();
    			break;
     
    		case (pid_t) 0:
    			sigaction(SIGINT, &action, NULL);
    			execlp("bg", "bg", "getpid()", NULL);
    			status = evaluer_expr(e->gauche);
    			exit(0);
    			break;
     
    		default:
    			kill(pid, SIGINT);
    			elimination_zombie(pid, &status);
    			break;
    	}
     
    	return status;
    }

  2. #2
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Bonsoir. Y'a plein de trucs choquants là-dedans: pid qui est set à 0 puis utilisé dans un switch , le exit(0) ... J'aimerai savoir quel est le résultat avant de chercher pourquoi ce n'est pas celui escompté
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Désolé comme je bosse sur une machine virtuelle, je n'ai pas fait de copier coller. Mais je fais bien un pid = fork() avant le switch.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 16
    Points : 16
    Points
    16
    Par défaut J'aimerai savoir quel est le résultat avant de chercher pourquoi ce n'est pas celui escompté
    Ce programme se termine par signal. Ce qui correspond au résultat de la fonction eliminer_zombie(pid, &status) lorsque le processus fils a été tué par un signal.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/12/2009, 13h18
  2. Réponses: 3
    Dernier message: 25/09/2009, 12h48
  3. Exécuter une commande depuis un programme Java
    Par spark_legion dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 23/03/2009, 12h06
  4. Réponses: 8
    Dernier message: 17/12/2008, 12h10
  5. Réponses: 2
    Dernier message: 15/12/2007, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo