问题描述
我编写了许多C语言程序,它们使用fopen
在Linux上处理文件。但是,这个特殊的问题让我感到难过。
像往常一样,我有
FILE *filePtr = fopen(strFileName,"r");
if (!filePtr)
{
printf("Unable to open %s - %s\n",strFileName,strerror(errno));
return -1;
}
即使上面的代码以root身份运行,打印出的结果仍表明由于Unable to open /var/foo/bar - Permission denied
而导致失败,并且
[root@MyDevice:/]# whoami
root
[root@MyDevice:/]# ls -al /var/foo/bar
-rw------- 1 root root 1462272 Aug 26 00:00 /var/foo/bar
[root@MyDevice:/]# lsattr /var/foo/bar
lsattr: Permission denied While reading flags on /var/foo/bar
[root@MyDevice:/]# df -h | grep root
/dev/root 3.5G 1.1G 2.2G 33% /
[root@MyDevice:/]# stat /var/foo/bar
File: /var/foo/bar
Size: 1462272 Blocks: 2864 IO Block: 4096 regular file
Device: b302h/45826d Inode: 20046 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-08-28 15:42:55.312623778 -0500
Modify: 2020-08-26 00:00:00.188294996 -0500
Change: 2020-08-28 15:42:53.362623778 -0500
Birth: -
我有一个文件/var/foo/bar
,其中/var
挂载为/dev/mmcblk0p2 on / type ext4 (rw,relatime,i_version,data=ordered)
。我在这里想念什么? fopen()
和lsattr
都缺少根权限?
有趣的是,如果我删除了/var/foo/bar
,那么对于我的(大型)程序的几次运行,一切都会恢复正常。但是,在某些时候发生了一些不好的事情,然后我又回到了这种情况。
更新:在文件上运行stat
之后,后续的lsattr
不再出现权限问题错误!是什么意思?!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)