如何以编程方式在 linux 系统中创建文件以及沿路径丢失的目录



我想在我的程序中在 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命令一样)

相关内容

  • 没有找到相关文章

最新更新