c - 合并目录上的文件没有读/写访问权限

标签 c macos directory

我正在为uni开发一个项目,我们必须将一个或多个目录的内容合并到一个输出目录中,并且我的项目似乎工作得很好,除了输出目录中输出的文件没有读或写访问权限,我可以手动更改它,但我假设这不是所需的解决方案,我对 c 和 OSX 相当陌生,所以这可能是一个非常简单的修复,

我目前使用 0777 作为 mkdir 函数的 mode_t 参数 并使用 O_RDWR 打开所有文件。

最佳答案

int dest= open(file_name, O_CREAT|O_RDRW) 行是错误的。 当您指定 O_CREAT 作为标志时,open () 希望您提供第三个参数,即权限位。

这意味着您必须执行以下操作: int dest= open(file_name, O_CREAT|O_RDRW, 0755);。由于您正在复制文件,因此您可以使用 stat 读取该文件的现有权限。 () ,并在打开和创建目标文件时提供相同的权限。

另请记住,创建新文件时的文件权限位受 umask 的影响。 ,如果您复制现有的权限位,您可能需要在复制文件之前调用 umask(0);,这样您始终获得与原始文件相同的权限。

关于c - 合并目录上的文件没有读/写访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13117298/

相关文章:

Objective-C 编程 : Will Learning C and/or Smalltalk Help?

字符串中的字符搜索

macos - 如何使用 AppleScript 或 shell 脚本在 OSX 中获取文件 URL?

文件夹的 HTML/CSS 传输

laravel - 在 Windows 7 cmd 中从不同目录运行文件?

C 为结构中的成员分配枚举值?

c - getopt 和字符串的奇怪问题

MySQL 连接只能通过命令行工作

python - 如何在 Mac OS 上使用 Tkinter 获得黑色文件对话框?

oracle - 如何在文件系统上创建目录?