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

POSIX C Discussion :

Lecture d'un PID a partir d'un fichier


Sujet :

POSIX C

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Lecture d'un PID a partir d'un fichier
    bonjour,
    donc voici le sujet de mon programme,
    je vais faire un prog qui lit si un process sous unix est exécuté ou non donc avec la fonction "system" je vais exécuté cette commande system("ps -aef | grep asterisk >> fichier.txt")
    asterisk etant le programme en question.
    donc normalement j'aurai dans mon fichier.txt ceci:

    root 3677 1 0 08:53 ? 00:00:00 /bin/sh /usr/sbin/safe_asterisk
    root 3687 3677 0 08:53 ? 00:00:00 /usr/sbin/asterisk -vvvg -c
    root 5120 4960 0 11:28 pts/2 00:00:00 rasterisk r
    root 5220 5126 0 12:00 pts/2 00:00:00 grep asterisk

    donc ce que je voudrais savoir c'est quel fonction dois-je utilisé pour lire si "3687" (le pid du programme) est existante ou pas
    j'espère que vous avez compris ce que je voulais dire

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    En fait tu veux récupérer la 2eme colonne et la derniere colonne aussi ?
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par hiko-seijuro
    En fait tu veux récupérer la 2eme colonne et la derniere colonne aussi ?
    Non non juste la deuxième colone de la deuxieme ligne

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Voilà qui devrait t'aider :


    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
     
    void Fonction ( char *Filename, int PID_Reference )
    {
    FILE  *fp=NULL ;
    char   Ligne[500] ;
    char  *p = NULL ;
    int    pid ; 
     
     
    fp = fopen ( Filename, "r");
    if ( fp == NULL )
      {
         fprintf ( stderr, "Erreur ouverture fichier %s", Filename );
      }
    else
      {
         while ( fgets ( Ligne, 500, fp ) != NULL )
           {
               p = strchr ( Ligne, ' ' ); /* On cherche le premier blanc */
               sscanf ( (p+1), "%d", &pid );
               if ( pid == PID_Reference )
                 {
                      /* Ici on fait ce qu'on veut faire avec */
                     ........
     
                     break ;
                 }
           }
     
         fclose(fp);
      }
    }
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par souviron34
    Voilà qui devrait t'aider :

    Waaaaa merciiiiiiii souviron34

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    oops attention j'ai oublié le fclose...

    Rajouté dans le code...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par souviron34
    oops attention j'ai oublié le fclose...

    Rajouté dans le code...
    Tu pourrais rajouter un sizeof(Ligne) à la place du 500 dans la fonction fgets et tu ne testes pas si p == NULL au retour de strstr (soyons paranos).

    Jc

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par fearyourself
    Tu pourrais rajouter un sizeof(Ligne) à la place du 500 dans la fonction fgets et tu ne testes pas si p == NULL au retour de strstr (soyons paranos).

    Jc
    Je pense que 500 c'est largement suffisent

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par diskonnect
    Je pense que 500 c'est largement suffisent
    Le problème n'est pas que 500 soit suffisant ou pas, c'est pour rendre la maintenance du code au minimum et faut toujours être parano ;-)

    Jc

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    soit...

    Mais bon, le jour où tu auras une ligne de +500 dans ps.... ça se peut, je dis pas, mais soyons raisonnable....

    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par fearyourself
    Le problème n'est pas que 500 soit suffisant ou pas, c'est pour rendre la maintenance du code au minimum et faut toujours être parano ;-)

    Jc
    Paranoia quand tu nous tiens
    Merci en tout cas fearyourself

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2009, 16h20
  2. Lecture des caracteres à partir d'un fichier
    Par benooo dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 23/01/2009, 21h28
  3. Réponses: 6
    Dernier message: 08/12/2008, 12h22
  4. Lecture infinie à partir d'un fichier
    Par reckahomis1 dans le forum C
    Réponses: 6
    Dernier message: 27/10/2008, 06h28
  5. lecture d une table a partir d un certain rang
    Par lolipop65 dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/08/2008, 10h24

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