Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
808 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  Utilisé le fichier /proc dans un script C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utilisé le fichier /proc dans un script C

n°797555
vinoromano
saoule
Posté le 30-03-2006 à 17:49:15  profilanswer
 

Bonjour tous,
Je suis entrain de faire un script pour lire le contenu du fichier /proc.
En effet, ce sont les pid qui m'intéressent et je les range dans un tableau.
Le problème, c'est que qd je fais fichier = cat /proc il me met un message d'erreur lors de la compile.
voici le script  
 
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
 
 
typedef struct {
   int nb1;
   int nb2;
   char t1[40];
   char t2[40];
   char t3[40];
   char t4[40];
     }bloc;
 
int nblignefichier(char arg2[40])
   {
   int n = 0; /* nombre de lignes lues */
   char ligne[256];
   FILE *f = fopen( arg2, "r" ); /* ouvre en lecture */
   if (f==NULL) {
     printf("erreur ouverture\n" );
     return 0;        /* sort du programme (code erreur 1) */
   }
   while (fgets( ligne, 256, f ) != NULL) { /* essai lecture ligne */
       n++;                                  
   }
   fclose(f);  /* ferme le fichier */
   return n;
  }
 
 
 
int main(void)
{
int i,a,taille,pos1;
/* Sélectionner le fichier*/  
printf("Entrer la commande 'cat /proc'" );  
 
fichier = = cat /proc
 
FILE* lecture = fopen("fichier","r" );
taille = nblignefichier("fichier" );
//création du tableau de taille "taille"
bloc b[taille];
 
char nb[255];
//remplissage du tableau
for(i=0;i<taille;i++)
{
 fscanf(lecture, "%s", &nb);
 b[i].nb1 = atoi(nb);
 fscanf(lecture, "%s", &nb);
 b[i].nb2 = atoi(nb);
 fscanf(lecture, "%s", &b[i].t1);
 fscanf(lecture, "%s", &b[i].t2);
    fscanf(lecture, "%s", &b[i].t3);
    fscanf(lecture, "%s", &b[i].t4);
 }
 fclose(lecture);
 
 //affichage du tabeau
 for(i=0;i<taille;i++)
 {
 printf("%d %d %s %s %s %s\n",b[i].nb1,b[i].nb2,b[i].t1,b[i].t2,b[i].t3,b[i].t4);
 }
 system("PAUSE" );
 
// la 1er colonne s'obtient avec b[i].nb1
// la 2e colonne s'obtient avec b[i].nb2
return EXIT_SUCCESS;
 
}
 
Merci de m'aider.
 

mood
Publicité
Posté le 30-03-2006 à 17:49:15  profilanswer
 

n°797559
l0ky
Posté le 30-03-2006 à 17:58:12  profilanswer
 

/proc n'est pas un fichier

n°797561
franceso
Posté le 30-03-2006 à 18:17:55  profilanswer
 

... et un programme en C n'est pas un script ;)

n°797563
franceso
Posté le 30-03-2006 à 18:23:36  profilanswer
 

Citation :

Code :
  1. fichier = = cat /proc


je sais pas trop ce que tu voulais faire là, mais c'est pas du C !
 
Est-ce que tu peux expliquer plus clairement ce que tu veux (et utilise les balises cpp stp)
 
Par ailleurs, il y a plein de problèmes dans ton programme C. Es-tu sûr que :
1- tu maîtrises assez le C pour faire ce que tu veux ?
2- le C est le langage le plus adapté ?
 
Vu le type de choses que tu cherches, je pense que des langages de script comme perl seraient plus adaptés.

n°797565
mirtouf
Light is right !
Posté le 30-03-2006 à 18:27:36  profilanswer
 
n°797566
l0ky
Posté le 30-03-2006 à 18:32:12  profilanswer
 

En fait j'ai plutot l'impression qu'il veut parser le résultat d'un

ls /proc


afin de récupérer les pids et seulement ceux la.
 
Toujours est il qu'il fait fausse route. Son programme ne fera jamais ca tel qu'il est écrit. Au lieu de lister le contenu du répertoire il ouvre "fichier" hors celui ci n'existe pas...

n°797697
vinoromano
saoule
Posté le 31-03-2006 à 09:51:55  profilanswer
 

Bonjour tous,
En fait je veux extraire les PID dans le répertoire "/proc" et pour le faire, je voudrais mettre le contenu de /proc dans un tableau. Le programme que j'ai fait fonctionne bien quand je copie le contenu de /proc dans un fichier sous le même répertoire que mon programme.
Je voudrais directement après avoir fait la commande ls /proc mettre le résultat dans le tableau et ensuite l'utiliser.
Merci

n°797699
vinoromano
saoule
Posté le 31-03-2006 à 09:54:17  profilanswer
 

Bonjour tous,
En fait je veux extraire les PID dans le répertoire "/proc" et pour le faire, je voudrais mettre le contenu de /proc dans un tableau. Le programme que j'ai fait fonctionne bien quand je copie le contenu de /proc dans un fichier sous le même répertoire que mon programme.
Je voudrais directement après avoir fait la commande ls /proc mettre le résultat dans le tableau et ensuite l'utiliser.
Merci

n°797700
vinoromano
saoule
Posté le 31-03-2006 à 09:54:21  profilanswer
 

Bonjour tous,
En fait je veux extraire les PID dans le répertoire "/proc" et pour le faire, je voudrais mettre le contenu de /proc dans un tableau. Le programme que j'ai fait fonctionne bien quand je copie le contenu de /proc dans un fichier sous le même répertoire que mon programme.
Je voudrais directement après avoir fait la commande ls /proc mettre le résultat dans le tableau et ensuite l'utiliser.
Merci

n°797701
franceso
Posté le 31-03-2006 à 10:01:58  profilanswer
 

es-tu sûr de vouloir faire ça en C ?
Qu'est-ce que tu veux faire avec tes PID une fois qu'ils seront dans un tableau ?


---------------
TriScale innov
mood
Publicité
Posté le 31-03-2006 à 10:01:58  profilanswer
 

n°797704
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 31-03-2006 à 10:14:21  profilanswer
 

[:mlc]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°797706
vinoromano
saoule
Posté le 31-03-2006 à 10:28:39  profilanswer
 

Avec les PID, je voudrais comparer avec les pid des processus qui s'exécutent ( commande ps -r) afin de détecter les processus qui ne fonctionnent pas. Ensuite grâce encore à /proc/pid/status obtenir toutes les infos sur ces processus.
Mon problème c'est de pouvoir mettre le résultat de ls /proc dans un fichier. Après je peux m'en sortir avec le langage C. C'est le seul que je connais un peu.

n°797712
franceso
Posté le 31-03-2006 à 10:39:27  profilanswer
 

OK, dans ce cas là, je pense que la commande popen peut t'être utile. (man popen pour les détails)
 
Par exemple:

Code :
  1. FILE *lecture=popen( "ls /proc", "r" );


---------------
TriScale innov
n°797713
jlighty
Posté le 31-03-2006 à 10:42:23  profilanswer
 

Est t-il nécessaire de comparer la liste des pid avec les processus qui s'exécutent sachant que dans /proc/<num pid>/status il y a l'état du processus ?

n°797717
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 31-03-2006 à 10:55:35  profilanswer
 

accéder à /proc/[0-9]*/status me parait plus judicieux


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°797719
vinoromano
saoule
Posté le 31-03-2006 à 10:57:23  profilanswer
 

Merci franceso
Merci Jlighty, c'est vrai, je suis tellemnt à fond que je passe à côté des trucs simples.
Merci à tous.

n°797956
vlack
Posté le 31-03-2006 à 19:39:18  profilanswer
 

Il n'y a pas des lib qui permettent de gérer les processus plutôt de faire un truc un peu crade comme ça ?


---------------
Quand il neige des pâtes, fartez vos skis avec du fromage râpé.
n°797986
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 31-03-2006 à 22:03:22  profilanswer
 

libgtop [:spamafote]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  Utilisé le fichier /proc dans un script C

 

Sujets relatifs
[Résolu] Script ftp : Problème de répertoireScript de reconnexion ADSL
Tnt : Fichier des chaines pour ToulouseComment faire un fichier .iso !?
[Résolu] Script en tcl/tk8.0 ???Creer serveur de fichier ?!
script d'affichage mp3 linux[debian] accents dans les noms de fichier (RESOLU)
[Debian / IPTables] Création du script ?fichier effacé dans /etc/init.d
Plus de sujets relatifs à : Utilisé le fichier /proc dans un script C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR