2017-04-10 1086 views
0

所以我想实现这个linux命令mkdir -m(权限模式)的目录名。像mkdir -m 444一样,应该创建一个具有444权限的文件夹名称a。C++用mkdir()创建目录并分配他们的权限

我试图做的是

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 任何帮助将是非常赞赏

+0

提示:* argv [2]'是什么类型? – aschepler

+0

[linux mkdir函数可能重复无法授权完整权限](http://stackoverflow.com/questions/8719867/linux-mkdir-function-cant-authorize-full-permission) –

+0

@aschepler char? –

回答

0

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

linux mkdir function can't authorize full permission

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

+0

那么我试着调用umask(0);它仍然不起作用。 –

+0

@jamesjung - 在你运行你的程序的shell中,当你执行'umask'时,它显示了什么? –

+0

其实...我认为使用* argv [2]是错误的...所以我试图做的是,因为当我运行文件名mkdir.cpp我会做类似./mkdir -m 0444 direcotryname和由于文件权限(数字)存储在argv [2]中,我试图使用* argv [2]作为权限并创建目录,如mkdir(argv [i],* argv [2]); –