当我写
mkdir("~/folder1" , 0777);
在linux中,创建目录失败。如果我用~
扩展的主目录替换它,它工作正常。使用有什么问题~
?
谢谢
~
只有shell知道,mkdir
系统调用不知道。
但如果你尝试:
system("mkdir ~/foo");
这在"mkdir ~/foo"
传递给 shell 并且 shell 扩展~
为$HOME
如果你想使用$HOME
with mkdir
,你可以使用这个getenv
函数:
char path[MAX];
char *home = getenv ("HOME");
if (home != NULL) {
snprintf(path, sizeof(path), "%s/new_dir", home);
// now use path in mkdir
mkdir(path, PERM);
}
~
是一个 shell 元字符,而不是内核提供的“快捷方式”。
如果您想轻松支持wordexp(3)
,请参阅手册页。(他们可能做的比你想要的要多得多。)glob(3)
~
~
通常由外壳扩展。不使用外壳意味着您负责扩展它。