当我写
mkdir("~/folder1" , 0777);
在linux中,创建目录失败。如果我用~扩展的主目录替换它,它工作正常。使用有什么问题~?
谢谢
~只有shell知道,mkdir系统调用不知道。
但如果你尝试:
system("mkdir ~/foo");
这在"mkdir ~/foo"传递给 shell 并且 shell 扩展~为$HOME
如果你想使用$HOMEwith 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)~
~通常由外壳扩展。不使用外壳意味着您负责扩展它。