1

Linuxシステムで/a/ b / c / testなどのファイルを作成したいのですが、現在はdir / aしか存在せず、プログラムで作成したいのですが、ファイルを作成できる関数はありますか? 1つの取引でdirが欠落している(つまり、b / c / testを作成している)だけでなく?パスに沿ってdirが欠落している場合、open、fopen、mkdirはすべて機能しないようです。ありがとうございました。

4

4 に答える 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()つまり、ディレクトリごとのループで自分自身を呼び出してから、ファイルを作成する必要があります。これは、mkdirexeがそれを行う方法です(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 に答える
0

Glib(Gtkの最下位レベルのライブラリで、独立して使用できます)を使用している場合は、g_mkdir_with_parentsを呼び出すだけですべてのディレクトリを作成できます(mkdir -pコマンドのように)

于 2012-05-31T05:23:09.317 に答える