私が書くとき
mkdir("~/folder1" , 0777);
Linuxでは、ディレクトリの作成に失敗しました。~
を拡張されたホームディレクトリに置き換えると、正常に機能します。使用の問題は何~
ですか?
ありがとう
~
mkdir
システムコールではなく、シェルだけが知っています。
しかし、試してみると:
system("mkdir ~/foo");
これは、"mkdir ~/foo"
がシェルに渡され、シェルが展開~
されるときに機能します$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);
}
~
はシェルのメタ文字であり、カーネルが提供する「ショートカット」ではありません。
簡単にサポートしたい場合は、wordexp(3)
またはman ページを参照してください。(彼らはあなたが望む以上のことをするかもしれません。)glob(3)
~
~
通常、シェルによって展開されます。シェルを使用しないということは、代わりにそれを展開する責任があることを意味します。