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 :

programme en c


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 1
    Points : 0
    Points
    0
    Par défaut programme en c
    Il s’agit de développer un programme en langage C pour réaliser un procédé de surveillance de deux processus dans un environnement industriel. L’ordinateur travaille de manière infinie sur un programme de fond représenté par une boucle infinie. Le processus de mesure ou d’arrêt des mesures est enclenché grâce à l’appui de la combinaison de touches ‘CTRL+Z’. Cette combinaison de touches peut être appuyée à tout moment par l’administrateur, ce qui va activer ou désactiver les processus de mesure. Les deux processus de mesure s’exécutent de la manière suivante :

    C’est toujours le processus 1 qui commence, où la prise de mesure se fait en 3 étapes :

    Prise de mesure 1, représentée par l’affichage du message ‘processus1_pid=val-pid : mesure 1’,

    Attente de 1 mn,

    Prise de mesure 2, représentée par l’affichage du message ‘processus1_pid=val-pid : mesure 2’,

    Attente de 2 mn

    Prise de la mesure 1 du processus 2 représentée par l’affichage du message ‘processus 2_pid=val-pid : mesure’,

    Attente 1mn,

    Reprise du système à partir du point a.

    Notez :

    1. les valeurs de pid affichées (val_pid) doivent être identiques dans chaque affichage soit pour le process1 ou pour le process2. Ie le système ne crée que 2 processus. Pour cela, il est recommandé d’utiliser la primitive fork().

    2. Que le calcul du temps doit se faire en utilisant les signaux de d’alarme SIGALRM activé par la primitive alarm(…). Ie Ne pas utiliser pause(), ni sleep()

    3. Lorsque l’administrateur désire éteindre l’ordinateur pour des raisons de maintenance, il doit appuyer 3 fois la combinaison ‘CTRL+C’ pour arrêter tout le programme y compris le programme de fond.

    Questions :

    svp j'arrive pas a faire la 1ere et la 2eme question de cet tp est-ce qu'il ya quelqu'un qui peut m'aider

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    Pour le 3ième question, je te propose d'essayer:
    - masquer le SIGINT sur un des processus, pour recevoir les 3 Ctrl-C sur un seul processus.
    - sur l'autre, compter les 3 Ctrl-C qui donneront les 3 SIGINT à compter avec un code similaire à la 2ème question.
    - après 3 SIGINT, on envoie un SIGTERM à l'autre processus et on stoppe le processus courant.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par sabrina.ao Voir le message
    programme en c
    J'aime bien ce genre de titre. Clair, précis, on sait tout de suite de quoi il s'agit. Evidemment que c'est pour un programme en C que tu viens, c'est un forum de C. On se doute bien que ce n'est pas pour un programme en Fortran ou en COBOL. Donc peut-être donner un résumé un peu plus explicite du souci rencontré permet ainsi de voir de quoi il s'agit sans avoir besoin de rentrer dans le topic !!!

    Citation Envoyé par sabrina.ao Voir le message
    svp j'arrive pas a faire la 1ere et la 2eme question de cet tp
    Sous-entendu que pour la 3° il n'y a pas de souci tu veux dire?

    Citation Envoyé par sabrina.ao Voir le message
    est-ce qu'il ya quelqu'un qui peut m'aider
    Déjà sais-tu utiliser fork() et alarm() ? Et intercepter un signal via signal() ??? Car c'est la base de ce TP.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Sous-entendu que pour la 3° il n'y a pas de souci tu veux dire?
    si elle n'arrive pas à faire la 1ièreni la 2ième question, tu ne fais pas la 3ième.
    on répond dans l'ordre

    Moi c'est cette phrase "les valeurs de pid affichées (val_pid) doivent être identiques dans chaque affichage soit pour le process1 ou pour le process2"
    Si tu forkes ton processus (donc tu as 2 processus) comment tu peux avoir + de 2 PIDs ?

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    si elle n'arrive pas à faire la 1ièreni la 2ième question, tu ne fais pas la 3ième.
    Je ne demandais pas si la 3° était faite, mais si elle était faisable. Et c'était aussi de l'ironie car si elle n'est pas capable de faire Q3 (ce que je crois) ce n'était alors pas la peine de préciser spécifiquement Q1 et Q2. Un peu à la Kaamelott quand Hervé de Rinel dit "cette semaine je n'ai pas fait grand chose" et que Leodagan de Carmélide lui répond "par rapport aux semaines précédentes vous voulez dire?"

    Citation Envoyé par foetus Voir le message
    Moi c'est cette phrase "les valeurs de pid affichées (val_pid) doivent être identiques dans chaque affichage soit pour le process1 ou pour le process2"
    Si tu forkes ton processus (donc tu as 2 processus) comment tu peux avoir + de 2 PIDs ?
    C'est au cas où tu aurais la tentation de faire la boucle principale dans le main() et générer à chaque itération 2 nouveaux processus pour effectuer les mesures ce qui serait alors plus facile pour tout synchroniser. Parce que le truc "mesure P1, attente 1mn, mesure P1, attente 2mn, mesure P2, attente 1mn et recommencer" c'est un gros souci. Comment synchroniser les 2 processus pour faire en sorte que P2 attende 2mn après que P1 ait fini sa 2° mesure? A coup de signal probablement mais ça reste bien chiant à programmer. D'autant plus que pour que P1 puisse envoyer un signal de synchronisation à P2 il doit connaitre son pid (et inversement). Ou alors P1 envoie un signal au père qui le renvoie sur P2 mais là encore ça reste assez lourd.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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