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

C Discussion :

Exercice de Travaux pratique sur les processus


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Exercice de Travaux pratique sur les processus
    Bonjour,
    je n'arrive pas à faire l'exo2

    Exercice 1 :

    Écrire un programme qui réalise le traitement suivant :
    - Le processus exécute une boucle sans fin en attendant de recevoir le signal SIGUSR1.
    Dés qu’il reçoit ce signal, il affiche sur la sortie standard son PID et le numéro du
    signal reçu, puis se termine.
    Le processus sera lancé en tâche de fond et le signal lui sera envoyé par le shell de connexion
    avec la commande kill ( consulter le man de cette commande du shell pour voir comment on
    doit l’utiliser).
    Le programme source sera codé dans le fichier signal1.c et le programme exécutable sera
    codé dans le fichier signal1.
    La trace d'exécution du processus sera enregistrée dans le fichier signal1.trace.

    Exercice 2 :

    Écrire un programme qui réalise le même traitement que celui de l’Exercice 1, mais qui sera
    mis en oeuvre de la façon suivante :
    - le signal SIGUSR1 sera émis par un second processus dont le traitement sera codé dans
    le fichier signal2.c et le programme exécutable dans le fichier signal2.
    La trace d'exécution du processus sera enregistrée dans le fichier signal2.trace.
    - le processus signal1 sera lancé en tâche de fond, ensuite le processus signal2
    sera lancé en premier plan en lui passant en paramètre le PID du processus signal1.

    voici le code de l'exo 1: qui compile et s'execute parfaitement

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    #include <unistd.h>
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <signal.h>
     
     
     
    typedef void ( * PtrFct) (int) ;
    void traiterSIGUSR1(int numSig);
     
    int main(void)
    {
     
    	time_t t;
    	t=time(NULL);
    	printf("%s\n","*****************************************");
    	printf("%s\n","*****************************************");
    	printf("Date et heure: "); 
    	printf("%s\n",ctime(&t));
     
     
    	/* retourne le login de l utilisateur*/
    	printf("LOGIN: ");
    	printf("%d\n", system("logname"));
    	printf("%s\n","");
     
     
    	/*retourne l'UID de l'utilisateur*/ 
    	printf("UID de l'utilisateur :");                   
    	printf("%d\n", getuid()) ;
        	printf("%s\n","*****************************************");
     
    	PtrFct retFct;
    	retFct = signal ( SIGUSR1, traiterSIGUSR1);
            if (retFct == SIG_ERR )
            { 
                  perror ("erreur signal") ; 
                  exit(1) ; 
            }	
     
        	while (1)
    	{
    	}
     
     
     
    }
    void traiterSIGUSR1(numSig)
    	{   
    		pid_t idProc1;
       		printf(" PID= %d , numéro du signal = %d \n ", idProc1, numSig);
    		exit(0);
    	}

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2011
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    avec un peu de réflexion on finit par y arriver

    voici le code de signal2.c:

    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
    #include <unistd.h>
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <signal.h>
     
     
     
     
     
     
    char* ptabpar[]={ "signal1"};
     
     
     
    int main( int nbpar, char * p_tabpar[])
    {
        int pid;
        pid=atoi(p_tabpar[1]);
        kill(pid,SIGUSR1);
    }

Discussions similaires

  1. Exercice sur les processus
    Par guipe dans le forum Débuter
    Réponses: 8
    Dernier message: 13/11/2017, 04h20
  2. [2000] Activité en cours\Informations sur les processus
    Par Débéa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/02/2006, 12h42
  3. demande d'information sur les processus sql server
    Par patrick B dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/11/2005, 15h04
  4. Agir à distance sur les processus des utilisateurs
    Par kuranes dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 11/10/2005, 11h18
  5. Réponses: 5
    Dernier message: 24/04/2005, 05h09

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