我想在我的程序中创建一个文件在linux系统上,比如说/a /b/c//a,目前我只有目录测试存在,我想在我的程序中做这件事,有没有什么功能可以同时创建文件和缺失的目录(即创建b/c/test)?如果路径中有缺失的目录,open,fopen,mkdir似乎都不能工作。谢谢。
发布于 2012-05-31 11:24:02
来自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语言。
发布于 2012-05-31 11:15:57
我认为你需要两个命令:
$ mkdir -p /a/b/c/ && touch /a/b/c/test发布于 2012-05-31 11:16:06
很抱歉,您必须对两步流程感到满意:
mkdir -p /a/b/c
touch /a/b/c/testhttps://stackoverflow.com/questions/10826978
复制相似问题