linux下mkdir头文件_Linux中判断一个目录是否存在,如果不存在就创建这个目录

在操作文件目录时我们常常会考虑如下的功能:

1、判断文件是否存在,并判断文件是否可写/目录是否存在

Linux下:

#include

int access(const char* pathname, int mode);

参数介绍:

返回值:成功0,失败-1

pathname 是文件的路径名+文件名

mode:指定access的作用,取值如下:

F_OK 值为0,判断文件是否存在

X_OK 值为1,判断对文件是可执行权限

W_OK 值为2,判断对文件是否有写权限

R_OK 值为4,判断对文件是否有读权限

注:后三种可以使用或“|”的方式,一起使用,如W_OK|R_OK

C++(标准C++中):

头文件:

函数原型:int _access(const char *pathname, int mode);

参数:pathname 为文件路径或目录路径 mode 为访问权限(在不同系统中可能用不能的宏定义重新定义)

返回值:如果文件具有指定的访问权限,则函数返回0;如果文件不存在或者不能访问指定的权限,则返回-1.

备注:当pathname为文件时,_access函数判断文件是否存在,并判断文件是否可以用mode值指定的模式进行访问。当pathname为目录时,_access只判断指定目录是否存在,在Windows NT和Windows 2000中,所有的目录都只有读写权限。

mode的值和含义如下所示:

00——只检查文件是否存在

02——写权限

04——读权限

06——读写权限

注意:用   int   access(const   char   *pathname,   int   mode);   判断有没有此文件或目录 --它区别不出这是文件还是目录

用   int   stat(const   char   *file_name,   struct   stat   *buf); 判断该文件或目录是否否存在 ;得到st_mode,然后判断是不是目录文件。

stat()系统调用看是否成功,不成功就不存在,成功判断返回的st_mode是否是一个文件夹。

2、判断目录是否存在

可以使用opendir来判断,这是比较简单的办法。

#include

#include

DIR *opendir(const char *name);

3、Linux下mkdir函数,创建目录

头文件库:

#include

#include

函数原型:

int mkdir(const char *pathname, mode_t mode);

函数说明:

mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。

返回值:

若目录创建成功,则返回0;否则返回-1,并将错误记录到全局变量errno中。

mode的值如下表:

S_IRWXU00700权限,代表该文件所有者拥有读,写和执行操作的权限

S_IRUSR(S_IREAD)00400权限,代表该文件所有者拥有可读的权限

S_IWUSR(S_IWRITE)00200权限,代表该文件所有者拥有可写的权限

S_IXUSR(S_IEXEC)00100权限,代表该文件所有者拥有执行的权限

S_IRWXG00070权限,代表该文件用户组拥有读,写和执行操作的权限

S_IRGRP00040权限,代表该文件用户组拥有可读的权限

S_IWGRP00020权限,代表该文件用户组拥有可写的权限

S_IXGRP00010权限,代表该文件用户组拥有执行的权限

S_IRWXO00007权限,代表其他用户拥有读,写和执行操作的权限

S_IROTH00004权限,代表其他用户拥有可读的权限

S_IWOTH00002权限,代表其他用户拥有可写的权限

S_IXOTH00001权限,代表其他用户拥有执行的权限

int32_t OpendirAndMkdir(const char * pathname)

{

int ret = 0;

DIR * mydir = NULL;

if ((mydir = opendir(pathname)) == NULL)

{

ret = mkdir(pathname, 0755);

if (ret != 0) return -1;

printf("%s created sucess!/n", pathname);

}

else

{

printf("%s exist!/n", pathname);

}

return ret;

}

本文地址:https://blog.csdn.net/Swallow_he/article/details/109639047

希望与广大网友互动??

点此进行留言吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac 连接hbase的图形化界面_MAC安装Hbase以及Hbase基本命令

安装Hbase1.官网下载安装包,我下载的是hbase-2.4.0-bin.tar.gz。2.解压:tar zxf hbase-2.4.0-bin.tar.gz3.安装JDK,并设置JAVA_HOME,通过vi ~/.bash_profile,设置环境变量export JAV…

ldap java_使用LDAP保护Java EE6中的Web应用程序

ldap java在上一篇文章中,我们解释了如何在通过传输层安全性(TLS)/安全套接字层(SSL)传输数据时保护数据。 现在让我们尝试了解如何为使用LDAP服务器进行身份验证的基于JEE 6的Web应用程序应用安全机制。 目的&#x…

mysql 一致性hash_一致性hash算法在分表分库中的应用

一致性hash算法结构图 分表分库结构图 可进行循环冗余存储,顺时针存储到下一个物理节点(非虚拟节点)package com.haiziwang.platform.kmcsms.route.algorithm;import java.util.Collection;import java.util.SortedMap;import java.util.TreeMap;/*** 一致性Hash算法…

生产中的性能分析

生产中的性能分析 如果您在Java应用程序的性能方面遇到了一些严重问题,那么很可能您会知道线程分析的价值。 但是您知道应该使用哪个分析器吗? 探查器使用两种基本技术-采样和仪器。 采样分析器 采样探查器包括定期向JVM询问所有当前活动线程的当前执行…

mysql用com_MySQL 使用教程

关于 MySQLMySQL 是最流行的开源数据库。本文简明的讲解了 MySQL 如何下载安装到使用的整个过程。MySQL 支持多种特性:使用 C和 C编写,并使用了多种编译器进行测试,保证了源代码的可移植性。支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell…

c++ 一维数组长度_每天一点C / 一维数组和指针

哈喽,我是老吴,继续记录我的学习心得。每天一点系列是我对微习惯的践行。现在能做到每天一点 C,将来就会有更多的每天一点系列,没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux,不要给自己设限。为什么是每天一…

设计模式 工厂方法_工厂设计模式–一种有效的方法

设计模式 工厂方法如您所知,“工厂方法模式”或俗称“工厂设计模式”是“创意设计模式”类别下的一种设计模式。 模式背后的基本原理是,在运行时,我们根据传递的参数获得类似类型的对象。 关于这种模式的文章很多,开发人员可以通过…

SMPP Java示例(客户端)

这篇文章通过创建一个简单的SMPP客户端向移动用户发送短信来提供SMPP Java示例,使用该客户端我们可以简单地提交以向单个移动用户发送消息,也可以一次将消息广播给多个移动用户。另外,我们将验证交货收据。 出于客户端的目的,我们…

mysql插入另一个表中数据_MySql中把一个表的数据插入到另一个表中的实现

1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:INSERT INTO 目标表 SELECT * FROM 来源表;insert into insertTest select * from insertTest2;2.如果只希望导入指定字段,可以用这种方法:INSERT INTO 目…

mysql事务中怎么更改空值_MySQL事务

1.事务1.事务特性--ACIDAtomicity(原子性):要么全做,要么不做,不能只做一半(银行转账)Consistency(约束性):事务的前后,约束都能满足Isolation(依赖性):事务之间是独立的,互不影响的Durability(持久性):事务执行之后,事物的结果可以持久保存2.事务隔离级别:read uncommitted:可…

mysql自定义函数多参数_自定义mysql函数 - 无法传递参数

作为标题状态。这里的功能DELIMITER //CREATE FUNCTION GetCreateValue( table_name CHAR(64), id_field CHAR(64), name_field CHAR(64), name_value CHAR(64) )RETURNS INTEGERBEGINDECLARE ret INTEGER;SELECT count(*) INTO ret FROM table_name WHERE name_field name_va…

与Zapier集成

整合很无聊。 也是不可避免的。 但是我不会写有关企业集成模式的文章 。 相反,我将解释如何创建与Zapier集成的应用程序。 什么是Zapier ? 它是一项服务,使您可以通过其API(或协议)连接两个(或多个&#x…

python用psf函数_python学习之-类的内置函数

内置方法:__str__(该方法必须返回字符串类型),在对像被打印时自动触发,然后将该方法的返回值当做打印结果输出)class People:def __init__(self,name,age):self.namenameself.ageagedef __str__(self): #绑定给对象的方法return ‘‘ %(self.name,self.age) #这个方…

多用户远程连接mysql_Mysql权限控制 - 允许用户远程连接

Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作:一、允许root用户在任何地方进行远程登录,并具有所有库任何操作…

cxf 服务端soap报文_使用Apache CXF开发SOAP Web服务

cxf 服务端soap报文在上一篇文章中,我逐步介绍了使用apache CXF开发简单的RESTFull服务的步骤。 在本文中,我将讨论使用CXF开发SOAP Web服务。 在继续前进之前,让我们先了解一下构成SOAP Web服务的概念/元素 SOAP或简单对象访问协议 SOAP是一…

Java 8日期和时间

如今,一些应用程序仍在使用java.util.Date和java.util.Calendar API,包括使我们的生活更轻松地使用这些类型的库,例如JodaTime。 但是,Java 8引入了新的API来处理日期和时间,这使我们可以对日期和时间表示进行更精细的…

php mysql 随机字符串_MySQL_Mysql 自定义随机字符串的实现方法,前几天在开发一个系统,需要 - phpStudy...

Mysql 自定义随机字符串的实现方法前几天在开发一个系统,需要用到随机字符串,但是mysql的库函数有没有直接提供,就简单的利用现有的函数东拼西凑出随机字符串来.下面简单的说下实现当时.1.简单粗暴.select ..., substring(MD5(RAND()),floor(…

python哪些类型可以作为迭代器_python0.8-----set类型与迭代器

set:类似dict,是一组dict的集合,不存储value。本质:无序(没有下标)无重复的元素的集合。创建:创建set需要一个list或者tuple或者dict作为输入集合。重复元素在色中会被自动过滤。s1[1,2,3,4,5,6,1,2]set(s1){1,2,3,4,5,6} --表示》…

线程池实现填充短信_填充一个池需要多少个线程?

线程池实现填充短信在最近几个月中,我们一直看到很小但持续的操作失败,但有一个奇怪的异常– org.springframework.jdbc.CannotGetJdbcConnectionException –“无法获得JDBC连接; 嵌套异常是java.sql.SQLException:客户端尝试检出…

python线性回归x可以数量不一样吗_R和Python中的线性回归 - 在同一问题上的结果不同...

只是指出这一点: statsmodel s least squares fit does by default not include a constant. If we remove the constant from R适合,我们得到与Python实现非常相似的结果,或者相反,如果我们向 statsmodel -fit添加一个常量&#…