Utilisé le fichier /proc dans un script C

Utilisé le fichier /proc dans un script C - Linux et OS Alternatifs

Marsh Posté le 30-03-2006 à 17:49:15    

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.
 

Reply

Marsh Posté le 30-03-2006 à 17:49:15   

Reply

Marsh Posté le 30-03-2006 à 17:58:12    

/proc n'est pas un fichier

Reply

Marsh Posté le 30-03-2006 à 18:17:55    

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

Reply

Marsh Posté le 30-03-2006 à 18:23:36    

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.

Reply

Marsh Posté le 30-03-2006 à 18:27:36    

Reply

Marsh Posté le 30-03-2006 à 18:32:12    

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...

Reply

Marsh Posté le 31-03-2006 à 09:51:55    

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

Reply

Marsh Posté le 31-03-2006 à 09:54:17    

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

Reply

Marsh Posté le 31-03-2006 à 09:54:21    

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

Reply

Marsh Posté le 31-03-2006 à 10:01:58    

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
Reply

Marsh Posté le 31-03-2006 à 10:01:58   

Reply

Marsh Posté le 31-03-2006 à 10:14:21    

[:mlc]


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

Marsh Posté le 31-03-2006 à 10:28:39    

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.

Reply

Marsh Posté le 31-03-2006 à 10:39:27    

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
Reply

Marsh Posté le 31-03-2006 à 10:42:23    

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 ?

Reply

Marsh Posté le 31-03-2006 à 10:55:35    

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
Reply

Marsh Posté le 31-03-2006 à 10:57:23    

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

Reply

Marsh Posté le 31-03-2006 à 19:39:18    

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é.
Reply

Marsh Posté le 31-03-2006 à 22:03:22    

libgtop [:spamafote]


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

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed