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有何不同呢?想不明白。下次再想吧。
-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有何不同呢?想不明白。下次再想吧。
相关文章推荐
- gnu coreutils mkfifo.c源码分析
- gnu coreutils nice.c源码分析
- gnu coreutils factor.c源码分析
- gnu coreutils utime.c 源码分析
- gnu coreutils chgrp.c 源码分析
- gnu coreutils tty.c源码分析
- gnu coreutils users.c源码分析
- gnu coreutils rm.c 源码分析
- gnu coreutils echo.c 源码分析
- gnu coreutil源码分析nl.c
- gnu coreutils4.5.1 link.c源码解读
- gnu coreutils4.5.1 unlink.c源码解读
- gnu coreutils4.5.1 fold.c源码解读
- gnu coreutils4.5.1 true.c源码解读
- gnu coreutils4.5.1 chroot .c源码解读
- 深入理解Spark 2.1 Core (一):RDD的原理与源码分析
- 深入理解Spark 2.1 Core (七):Standalone模式任务执行的原理与源码分析
- jQuery 2.0.3 源码分析之core(一)整体架构
- org.springframework.core.io.Resource接口源码分析
- Discuz! X2 核心类源码(class_core.php)分析