您的位置:首页 > 其它

gnu coreutils mkdir.c源码分析

2018-03-06 09:56 393 查看
mkdir有-p选项,表示父目录不存在,就顺便也创建。
-m选项,用于目录权限相关设置
前面的一扫而过,像usage函数,功能都一样。重点在main.c中,
 while ((optc = getopt_long (argc, argv, "pm:v", longopts, NULL)) != -1)
这段用于分析选项,并根据选项对某些变量进行设置
再一个大的for循环,对每个需要建立的目录分别建立如下:
 for (; optind < argc; ++optind)
    {}
当设置-p选项时,先有一段
 if (create_parents)
 {
   char *parents = dir_name (argv[optind]);
   fail = make_path (parents, parent_mode, parent_mode,
       -1, -1, 1, verbose_fmt_string);
   free (parents);
 }
但make_path是用来建立其父目录的吧,打开make_path
又是很长一截,其中调用mkdir系统调用。我也不明白这个调用的具体用法,肯定是用来创建目录的。
但/root/test/01
创建那个目录呢?还是
/root
/root/test
/root/test/01
全部创建,我不明白。
还是回到main.c,接着调用
 fail = make_dir (dir, dir, newmode, &dir_created);
但make_path,make_dir有何不同呢?想不明白。下次再想吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: