Utilisé le fichier /proc dans un script C - Linux et OS Alternatifs
Marsh Posté le 30-03-2006 à 18:23:36
Citation :
|
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.
Marsh Posté le 30-03-2006 à 18:27:36
/proc est un pseudo-fs
http://www.tldp.org/LDP/lkmpg/2.6/html/x769.html ça aide ?
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...
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
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
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
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 ?
Marsh Posté le 31-03-2006 à 10:14:21
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.
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 :
|
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 ?
Marsh Posté le 31-03-2006 à 10:55:35
accéder à /proc/[0-9]*/status me parait plus judicieux
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.
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 ?
Marsh Posté le 31-03-2006 à 22:03:22
libgtop
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.