【问题标题】:c++ creating directories with mkdir() and assigning their permissionsc++ 使用 mkdir() 创建目录并分配其权限
【发布时间】:2017-09-06 03:11:21
【问题描述】:

所以我正在尝试实现这个 linux 命令 mkdir -m(权限模式)目录名。像 mkdir -m 444 a 应该创建一个具有 444 权限的文件夹名称 a。

我试图做的是

for (int i = 3; i <argc; ++i) {
      mkdir(argv[i], *argv[2]); 
}

for (int i = 3; i <argc; ++i) {
      mkdir(argv[i], 0775); 
      chmod(argv[i], *argv[2]);
}

但它会创建具有不同访问权限的文件夹,例如 0064 任何帮助将不胜感激

【问题讨论】:

标签: c++ chmod mkdir


【解决方案1】:

看看下面的问题,看看是否有帮助:

linux mkdir function can't authorize full permission

底线?在您的 shell 中检查 umask,这可能会限制您的权限。

【讨论】:

  • 好吧,我尝试调用 umask(0);还是不行。
  • @jamesjung - 在您运行程序的 shell 中,当您执行 umask 时,它会显示什么?
  • 实际上...我认为使用 *argv[2] 是错误的...所以我想做的是因为当我运行文件名 mkdir.cpp 时我会做类似 ./ mkdir -m 0444 direcotryname,并且由于文件权限(数字)存储在 argv[2] 中,我试图使用 *argv[2] 作为权限并创建类似 mkdir (argv[i], *argv[2] 的目录]);
  • 我建议运行一个非常简单的程序,只需调用一次mkdir 函数,以及硬编码的参数。看看当您尝试这样做时会发生什么,以便仅隔离您试图找出的权限问题。 mkdir ( "testfile", 0775 ); 之类的东西看看权限是否适用于该示例,或者它们是否仍然不正确。
  • 是的,我试过了,效果很好,但是要使用 0777 创建目录,我首先必须设置 umask(0);所以我试着把 umask(0);在 mkdir 之前,但它仍然没有工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2018-09-20
  • 2021-12-11
相关资源
最近更新 更多