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