質問

書くとき

mkdir("~/folder1" , 0777);

Linux ではディレクトリの作成に失敗しました。交換すると ~ ホームディレクトリを展開すると、正常に動作します。使用上の問題は何ですか ~ ?

ありがとう

役に立ちましたか?

解決

~ シェルのみに知られており、シェルには知られていません。 mkdir システムコール。

しかし、試してみると:

system("mkdir ~/foo");

これは次のように機能します "mkdir ~/foo" シェルに渡され、シェルが展開されます ~$HOME

を利用したい場合は、 $HOMEmkdir, を利用できます。 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);
}

他のヒント

~シェルのメタ文字ではなく、カーネルが提供する「ショートカット」です。

// Linuxの場合: wordexp(3) のか<のhref = "HTTPを参照してください。 die.net/man/3/glob」のrel = "nofollowをnoreferrer"> glob(3) のmanページ、あなたは簡単に~をサポートしたい場合。 (彼らはより多くのあなたが望むより多くを行うことがあります。)

~は、通常はシェルによって展開されます。あなたが代わりにそれを拡大するための責任があることをシェルの手段を使用していない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top