Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用C++;_C++_Linux - Fatal编程技术网

C++ 使用C++;

C++ 使用C++;,c++,linux,C++,Linux,我尝试创建新目录并设置其权限(最多使用c++11且不使用boost),这样用户、组和其他人就可以列出其中的文件并读取它们并写入新文件(linuxenvironment) #包括 #包括 内部主(空){ const char*path=“/tmp/newDir”; 模式处理掩码=umask(0); int syscall_status=mkdir(路径,S_IRWXU | S_IRWXG | S_IRWXO); umask(过程屏蔽); 返回syscall\u状态; } 此代码基于mkdir(和

我尝试创建新目录并设置其权限(最多使用c++11且不使用boost),这样用户、组和其他人就可以列出其中的文件并读取它们并写入新文件(linuxenvironment)

#包括
#包括
内部主(空){
const char*path=“/tmp/newDir”;
模式处理掩码=umask(0);
int syscall_status=mkdir(路径,S_IRWXU | S_IRWXG | S_IRWXO);
umask(过程屏蔽);
返回syscall\u状态;
}
此代码基于mkdir(和umask)的man(2)页。 但是,所创建的目录具有
rwxr-xr-x
权限(不写入组和其他目录)。 我还尝试在目录上使用chmod syscall,但没有解决问题。stackoverflow中的其他源处理文件(而不是文件夹),并且尝试在我的目录中应用文件方法也不起作用

另外,我希望避免从stdlib调用system(),如果找不到解决方案(安全考虑),这是我将使用的最后一个选项

除了语法错误,这是错误的形式,因为C++11。在此之前,这将使用不推荐使用的转换。字符串文字是C++中的const,使用指针指向const .< 除此之外,假设POSIX系统,该程序是正确的。如果失败,则可以检查
errno
以了解原因。如果没有获得所有权限:检查父目录是否有默认ACL;这将覆盖乌马斯克


<>一个在C++中创建目录的可移植的方法是:<代码> STD::CureSytDirectory < /C>和一个设置权限的方式是:代码> STD::文件系统::权限< /C> > /< P>我强烈推荐BooS.FielSoSe。或者,如果你有C++ 17,<代码> <代码>你在运行什么特权级别?@ ANDYG我不能使用Boost和编译用C++ 11(不能更新)。@ Ryyk用户级,我有RWX权限,用于父DR/TMP/@ Runu:我对C++版本的同情:总体而言,无法使用Boost并不是最糟糕的事情;它倾向于潜入您的代码库,并使您的标题膨胀。path变量只是我为解决这个问题而编写的,在实际代码中,它是来自其他地方的常量字符串,当然没有输入错误:)。std::filesystem对我没有帮助,因为我使用的是c++11(我在评论中写到了这一点,但为了进一步澄清,我将对问题进行编辑)@RonU你应该看看ACL,这是其中最重要的部分@Swift FridayPie当我通过终端运行'chmod 777/tmp/newDir'时(与运行程序的用户相同),它将所需的权限授予dir,那么ACL阻止我有意义吗?@RonU
char* path = "/tmp/newDir";