c - 如果文件未以 sudo 打开,则系统调用 open C 无法打印文件内容

标签 c file operating-system root system-calls

所以我创建了一个新文件:

 fd = open("tester.txt", O_CREAT | O_RDWR);

然后使用系统调用 write 我向其中添加了一些信息。但是当我尝试从文件中读取信息时,它无法生成。使用终端我发现,打开文件的唯一方法是使用sudo 并且内容已成功写入。但是,我的程序不能是 root。那么,如何打开文件,向其中写入一些内容,而不关闭 C 程序输出文件。

最佳答案

您没有将文件模式指定为创建打开调用的第三个参数;尝试以下操作:

fd = open("tester.txt", O_CREAT | O_RDWR, 0644);

然后,文件应该以 -rw-r--r-- 模式创建,这样你自己的用户就可以打开它进行读写。否则,它可能会以一些随机权限结束,即 ------------,并且只有 root 可以打开它进行阅读(至少不需要修改它)。

关于c - 如果文件未以 sudo 打开,则系统调用 open C 无法打印文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47331344/

相关文章:

c - C--Linked List中的段错误

file - 二进制安全redis

c++ - 确保 C++(数字图像处理)程序和使用文件的处理程序之间的成功通信

c++ - 数字的二进制表示的大小

android - 禁用 Nexus 7 上的所有主页按钮和任务栏功能

java - 按值调用结果或其他

c - 采取线性输入,转换为几何序列并舍入?

我可以从 C 中的变量中检索数据类型吗?

c - 如何使用自定义 libopenssl 构建 openldap

java - 递归压缩一个目录,其中包含 Java 中任意数量的文件和子目录?