私は/ procの各ディレクトリで "comm"ファイルを読むつもりです。私のプログラムはディレクトリのリストを見ることができますが、このディレクトリにあるフォルダを開こうとするとエラーになります。私のシステムはDebian LinuxのハードウェアBeaglebone Blackです。私はLinux上でプログラミングを学んでいるので、たくさんの質問がある(時にはばかな)。コードのCのLinuxの/ procの場所からフォルダを開くことができません
リスト:
#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;
}
Linuxコンソールからログイン:
この関数が失敗すると、errnoが設定されます。 #includeを追加して、errnoの値をプリントに追加します。この方法で、失敗した理由を知ることができます。 –