对您来说好消息是,如果您不为获取文件地址的函数提供绝对路径,例如fopenor mkdir,它们总是假定路径是相对于当前地址的。因此,如果你写:
mkdir("Outputs");
它总是会创建Outputs运行代码的目录。如果要创建可执行文件本身所在的目录(而不是运行它的位置),您可以看到这个问题,了解如何检索正在运行的可执行文件的位置。简而言之,在linux下,你可以读到什么/proc/self/exe指向。(你很可能想要第一个)
关于权限,您可以简单地给它 0777(111111111 的八进制),这意味着所有权限都可用。mkdir(实际上是它下面的系统调用)会自动删除你没有的权限(所以你不能给你自己没有的目录权限)。
如果您不知道这些位代表什么,可以在 wikipedia中阅读。为了完整起见,我将做一个简短的解释。传统 Unix 系统中的权限(您这样做时返回的权限ls -l)采用以下形式:
drwxrwxrwx
|\_/\_/\_/
| | | |
T O G R
T告诉文件的类型是什么,例如d目录。O是文件所有者的一组三个权限,G是类似的权限,但对于文件所有者所属的组,R是其他权限(对不起,初始O已被使用;)。每组权限 ( rwx) 选择读取、写入和执行权限。您需要对目录具有执行权限才能导航到该目录。
因此,如果您想拥有一个不被其他人隐藏的目录,您可以将权限设置为 0755。私有目录可以有 0750 权限,超级私有目录可以有 0700 权限。所有用户之间的共享目录可以有 0777 权限.