Je vais lire le fichier "comm" dans chaque répertoire de/proc. Mon programme peut voir la liste du répertoire, mais quand j'essaye d'ouvrir le dossier dans ce répertoire j'obtiens une erreur. Mon système est le matériel Debian Linux Beaglebone Black. J'apprends la programmation sous linux donc j'ai beaucoup de questions (parfois stupide).Impossible d'ouvrir les dossiers de l'emplacement/proc en C linux
liste de code:
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <string.h>
#include <fcntl.h>
int main()
{
char path[50] = {0};
register struct dirent *dirbuf;
char* dirname = "/proc";
DIR *fdir;
fdir = opendir(dirname);
if (NULL == fdir)
{
printf("Can't open %s\n", dirname);
return;
}
while((dirbuf = readdir(fdir)) != NULL)
{
if ((strcmp(dirbuf->d_name, ".") == 0)||(strcmp(dirbuf->d_name, "..") == 0))
{
continue;
}
printf("folder name: %s\n", dirbuf->d_name);
strcat(path, dirbuf->d_name);
strcat(path, "/comm");
printf("path: %s\n", path);
int fd = open(path, O_RDONLY);
if (-1 == fd)
{
printf("Can't open file %s\n", path);
}
else
{
//read file
close(fd);
}
memset(path, 0, strlen(path) + 1); //clear path buffer
}
closedir(fdir);
return 0;
}
Connexion de la console linux:
Lorsque cette fonction échoue, errno est défini. Ajouter #include et ajouter la valeur errno à l'impression, de cette façon vous savez pourquoi il a échoué –