我想在我的程序中在 linux 系统上创建一个文件,比如/a/b/c/test,目前我只有 dir/a 存在,我想在我的程序中这样做,是否有任何函数可以在一笔交易中创建文件以及缺少的目录(即创建 b/c/test)? 打开, 如果沿途缺少目录,Fopen,Mkdir 似乎都无法工作。谢谢。
从 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 中)。为什么不使用execve
运行mkdir -p /a/b/c
命令?当然,为通话正确设置了 C 内容。
我认为您需要两个命令:
$ mkdir -p /a/b/c/ && touch /a/b/c/test
抱歉,您必须对两步过程感到满意:
mkdir -p /a/b/c
touch /a/b/c/test
如果你使用的是Glib(Gtk的最低级库,可以独立使用),你可以调用g_mkdir_with_parents来制作所有目录(就像mkdir -p
命令一样)