Linuxシステムで/a/ b / c / testなどのファイルを作成したいのですが、現在はdir / aしか存在せず、プログラムで作成したいのですが、ファイルを作成できる関数はありますか? 1つの取引でdirが欠落している(つまり、b / c / testを作成している)だけでなく?パスに沿ってdirが欠落している場合、open、fopen、mkdirはすべて機能しないようです。ありがとうございました。
質問する
1080 次
4 に答える
3
2つのコマンドが必要だと思います。
$ mkdir -p /a/b/c/ && touch /a/b/c/test
于 2012-05-31T03:15:56.827 に答える
3
差出人strace mkdir -p a/b/c
:
mkdir("a", 0751) = 0
open("a", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW) = 3
fchdir(3) = 0
close(3) = 0
mkdir("b", 0751) = 0
open("b", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW) = 3
fchdir(3) = 0
close(3) = 0
mkdir("c", 0751) = 0
mkdir()
つまり、ディレクトリごとのループで自分自身を呼び出してから、ファイルを作成する必要があります。これは、mkdir
exeがそれを行う方法です(Cで)。mkdir -p /a/b/c
でコマンドを実行してみませんexecve
か?もちろん、Cのものを適切に呼び出しに設定します。
于 2012-05-31T03:24:01.943 に答える
1
申し訳ありませんが、2段階のプロセスに満足する必要があります。
mkdir -p /a/b/c
touch /a/b/c/test
于 2012-05-31T03:16:06.413 に答える