c - 访问我使用同一应用程序创建的文件时,Linux 中的权限被拒绝

标签 c linux file permissions

我正在开发一个需要存储一些信息的程序,我决定为其使用一个简单的文件。

程序启动时会执行以下代码,如果文件存在则以追加模式打开文件,如果不存在则创建文件 (程序第一次加载时应该在下次加载时创建它,它只需要使用相同的文件)

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/

相关文章:

PHP文件上传在centos服务器中不起作用

c - 从 24bpp 位图中获取每个像素的 RGB 值以在 C 中转换为 GBA 格式

c - 如何确保正确的文件权限

c - 用宏初始化结构

c - 将视频文件的每一帧映射到指向原始帧的 .png

linux - 从管道输入中 grep 多个搜索模式并递增地报告单个计数

c - 按字母顺序插入双链表问题

c++ - 以编程方式创建打击垫声音

linux - 使用 sed 和行号在行首插入单词

javascript - 用本地镜像填充 svg 元素