写作时
mkdir("~/folder1" , 0777);
在Linux中,它无法创建目录。如果我用扩展的主目录替换~
,它可以正常工作。使用~
有什么问题?
由于
答案 0 :(得分:27)
~
,而不知道mkdir
系统调用。
但如果你尝试:
system("mkdir ~/foo");
当"mkdir ~/foo"
传递给shell并且shell将~
扩展为$HOME
如果您想将$HOME
与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);
}
答案 1 :(得分:12)
~
是一个shell元字符,而不是内核提供的“快捷方式”。
如果您想轻松支持~
,请参阅wordexp(3)
或glob(3)
手册页。 (他们可能做的比你想要的多得多。)
答案 2 :(得分:5)
~
通常由shell扩展。不使用shell意味着你负责扩展它。