~
известен только оболочке, а не системному вызову mkdir
.
Но если вы попробуете:
system("mkdir ~/foo");
это работает, когда "mkdir ~/foo"
передается в оболочку, а оболочка расширяется ~
до $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);
}