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

时间:2012-10-29 07:10:26

标签: c macos directory

我正在开发一个uni项目,我们必须将一个或多个目录的内容合并到一个输出目录中,我的项目看起来很完美,除了输出目录中输出的文件没有读写权限,我可以手动更改它但我假设这不是理想的解决方案,我对c和OSX相当新,所以它可能是一个非常简单的修复,

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

1 个答案:

答案 0 :(得分:1)

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);,这样您总能获得与原始文件具有相同的权限。