首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linux系统中以编程方式创建一个文件以及沿路径丢失的目录?

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

Stack Overflow用户
提问于 2012-05-31 11:12:56
回答 4查看 1K关注 0票数 1

我想在我的程序中创建一个文件在linux系统上,比如说/a /b/c//a,目前我只有目录测试存在,我想在我的程序中做这件事,有没有什么功能可以同时创建文件和缺失的目录(即创建b/c/test)?如果路径中有缺失的目录,open,fopen,mkdir似乎都不能工作。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-31 11:24:02

来自strace mkdir -p a/b/c

代码语言:javascript
复制
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语言。

票数 3
EN

Stack Overflow用户

发布于 2012-05-31 11:15:57

我认为你需要两个命令:

代码语言:javascript
复制
$ mkdir -p /a/b/c/ && touch /a/b/c/test
票数 2
EN

Stack Overflow用户

发布于 2012-05-31 11:16:06

很抱歉,您必须对两步流程感到满意:

代码语言:javascript
复制
mkdir -p /a/b/c
touch /a/b/c/test
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10826978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档