【发布时间】:2013-05-30 16:39:23
【问题描述】:
DIR *dir_ptr;
struct dirent *dir_entery;
dir_ptr = opendir("/tmp");
while (dir_ptr&&(dir_entery = readdir(dir_ptr))) {
printf("%s \n", dir_entery->d_name);
}
printf("%s \n", strerror(errno));
给出这个输出:
file_name
dir_name
errno = Remote I/O error
在/tmp 执行opendir(dir) 后到达readdir 时,我有一个目录和两个文件,它退出while 并输入此错误:
errno = Remote I/O error
为什么无法读取/tmp目录下的dir之后的文件?
【问题讨论】:
-
errno 121 是
EREMOTEIO(远程 I/O 错误)。目标文件系统可能存在权限问题。您是否尝试过以 root(超级用户)权限运行您的程序,如果您在 Ubuntu 中,请尝试使用sudo -
我会假设第二个文件具有不寻常的属性、名称、访问权限等。尝试在较低的目录中运行。也许它在“..”上窒息?
-
我chmod
/tmp:chmod -R 0777 /tmp中的所有文件 -
ls -la /tmp的输出是什么?如果需要保密,请隐藏实际文件名。