在Ubuntu中使用mkdir命令

ubuntu&C/C++でのプログラム中にmkdirを使っていてハマったので備忘録がわりに。

windowsだとあまり気にせずmkdir使ってもなんとかなるんやけど、
ubuntuで使うとオプション指定が必要。
まちがえるとアクセス権限がないディレクトリを作ってしまって、
直後のソースでそのディレクトリの中にファイルを新規作成するときに蹴られる。

なんで己の権限がないディレクトリが作れるんや。
意味わからんやんけ(仕様をちゃんと確認してないくせに逆ギレ)。
ディレクトリを作った直後にシステム側から権限を付与するから作るときは関係ないのか?
(ここまで書いてて◯ンター☓◯ンターの◯ラピカをちょっと思い出した)

那么,我想要创建一个函数,它能给定相对路径的目录名并返回完整路径,同时创建该目录。如果创建目录失败,就返回一个空的字符串(处理方式较懒散)。

没关系。反正系统中的目录结构已经被固定,计划只在这种状态下运作。 (↑这种想法会拖慢团队开发的进度)

※↓もとのソースをいじってアップしているから動作確認してません。

std::string create_dir(std::string dir_name)
{
    char buf[1024] = "";
    if (NULL == getcwd(buf, sizeof(buf)))
        return "";
    std::string new_dir = buf + std::string("/") + dir_name;
    if (0 != mkdir(new_dir.c_str(), S_IRWXO | S_IRWXU | S_IRWXG))
    {
        return "";
    }
    else
    {
        return new_dir;
    }
}

只需要提供一个选项,以下是对原文的汉语本土化的改写:

比如说,在这里,

    if (0 != mkdir(new_dir.c_str(), S_IRWXO))

如果你这样做,以后会后悔的。
虽然你自己创建了,但因为没有访问权限(S_IRWXO是为第三方提供的完全访问权限),
然后你想在文件里创建东西,结果会变得很困惑。

你能默认给每个人完全访问权限就好了啊。
有意识的人会自己指定选项吧。
而且mkdir的页面上都没有写关于选项的内容。
这是怎么回事啊。至少给个链接吧。。

广告
将在 10 秒后关闭
bannerAds