如何以编程方式在linux系统的路径中创建文件以及缺少dirs?

时间:2012-05-31 03:12:56

标签: linux create-directory

我想在我的程序中在linux系统上创建一个文件,比如/ a / b / c / test,目前我只有dir / a存在而且我想在我的程序中执行它,是否有任何函数可以在一笔交易中创建文件以及缺少的dirs(即创建b / c / test)?打开,fopen,mkdir如果在路径上缺少dirs,似乎都无法工作。谢谢。

4 个答案:

答案 0 :(得分:2)

我认为你需要两个命令:

$ mkdir -p /a/b/c/ && touch /a/b/c/test

答案 1 :(得分:2)

来自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语音电话。

答案 2 :(得分:1)

对不起,您必须对两个步骤感到满意:

mkdir -p /a/b/c
touch /a/b/c/test

答案 3 :(得分:0)

如果您正在使用Glib(Gtk的最低级别库,可以单独使用),您只需调用g_mkdir_with_parents即可创建所有目录(如mkdir -p命令)