0

我有一个在 Ubuntu 的 ./Desktop/TestFolder0 上运行的程序。

当程序在 TestFolder0 中运行时,我想创建一个名为 Outputs 的文件夹,并在该文件夹中保存一个归档的 Output.txt。所以它看起来像:

./Desktop/TestFolder0/Outputs

我想编写我的代码,如果我将我的程序移动到 TestFolderN 新文件夹和 Output.txt 将始终保存在那里。

我在看在C 中创建一个新目录,它教会了我关于mkdir. 我仍然不完全知道如何使用它,例如我需要给新目录一个路径,但我不知道如何指向我在文件夹层次结构中的位置。我还需要授予mkdir允许打开文件夹等的权限。

请帮忙

4

1 回答 1

0

对您来说好消息是,如果您不为获取文件地址的函数提供绝对路径,例如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 权限.

于 2013-11-10T00:37:40.003 回答