我正在开发一个需要存储一些信息的程序,我决定为其使用一个简单的文件。
程序启动时会执行以下代码,如果文件存在则以追加模式打开文件,如果不存在则创建文件 (程序第一次加载时应该在下次加载时创建它,它只需要使用相同的文件)
if((fd = open(path, O_APPEND|O_CREAT|O_RDWR, 666)) < 0)
{
perror("Database open failed");
}
else if(chmod(path, 666) < 0)
{
perror("Database set permissions failed");
}
else if((stream = fdopen(fd, "a+")) == NULL)
{
perror("Database get stream failed");
}
当文件不存在时,创建成功,程序运行正常。但是当文件已经存在时,它会显示“权限被拒绝”,即使它是创建该文件的同一用户下的同一程序。
更多细节:
- 我正在使用 Ubuntu 12.04 LTS
- 当我使用“ls -l”检查文件的权限时:“--w--wx-wT”
- 从终端使用 666 chmod 解决问题
- 代码中的 chmod() 完全没有帮助
谢谢!
最佳答案
open()
的模式必须是八进制,即 666
应该是 0666
。
最好使用模式的符号常量。
关于c - 访问我使用同一应用程序创建的文件时,Linux 中的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29825242/