linux下mkdir头文件_Linux中判断一个目录是否存在,如果不存在就创建这个目录_double怀的博客-程序员ITS301

技术标签: linux下mkdir头文件  

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

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

希望与广大网友互动??

点此进行留言吧!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29615645/article/details/113399470

智能推荐

儿童编程c语言_5种最适合儿童的编程语言_culing2941的博客-程序员ITS301

The rate at which children handle gadgets in this technology savvy era is quite interesting. The fact they are able to easily operate the gadgets, run programs on it easily shows that they are intrigu...

Java中OutOfMemoryError(内存溢出)的三种情况及解决办法_chuteng3602的博客-程序员ITS301

在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:PermanentGeneration space(永久保存区域)、Heap space(堆区域)、JavaStacks(Java栈)。其中永久保存区域主要存...

一款完全仿照E盾的源码(服务端+代理端+客户端)_banzhuan678的博客-程序员ITS301_e盾源码

简介:[易语言源码] 一款完全仿照E盾的源码(服务端+代理端+客户端)网盘下载地址:http://kekewl.net/NAiSaB1pLjx0图片:

基本目录结构和功能 (amlogic open linux)----学习笔记_christina_hu的博客-程序员ITS301_amlogic linux

Kernel/ARCH/ARC目录•ARC架构相关代码•[Arch-apollo-h]:Apollo-h的相关基本硬件初始化;•[Kernel]:中断,线程,硬件Cache等•[Mm]:内存和MMU,Cache的硬件管理•[Proc/arc700]:硬件启动代码,中断向量表,系统调用向量表;•[Boot]:用来生成bootloader识别的Image;•[BSP]:开发板相关目录的一个连接,在编译

sftp连接失败linux系统,本地电脑用Flashfxp连接SFTP提示连接失败_阳阙的博客-程序员ITS301

摘要:报错提示本地电脑用Flashfxp连接SFTP提示连接失败,如下截图报错解决办法查看ssh的配置文件#cat/etc/ssh/sshd_config&nbs...报错提示本地电脑用Flashfxp连接SFTP提示连接失败,如下截图报错解决办法查看ssh的配置文件#cat/etc/ssh/sshd_config|grep"sftp"检查看看sftp功能是否有开启,(如未开启...

随便推点

ZetCode PyQt4 tutorial widgets II_weixin_34405354的博客-程序员ITS301

#!/usr/bin/python# -*- coding: utf-8 -*-"""ZetCode PyQt4 tutorial In this example, we dispay an imageon the window. author: Jan Bodnarwebsite: zetcode.com last edited...

谈谈java的并发容器、Queue_秃了也弱了。的博客-程序员ITS301_为什么开发中 queue容器用的不多

目录同步类容器并发类容器ConcurrentMap:支持高并发下线程安全。Copy-On-Write容器:最好在读多写少的情况下使用。并发Queue同步类容器同步类容器是线程安全的。//HashMap不是线程安全的,但是这样做之后就是线程安全的。Map<String, String> map = Collections.synchronizedMap(new HashMap<String, String>());Vector类 是在 java

目标检测精选系列,目前最全的总结!(附论文下载)_计算机视觉研究院的博客-程序员ITS301

计算机视觉研究院专栏作者:Edison_G我们计算机视觉研究最近分享了较多目标检测领域的干货,今天我们就来总结下目前目标检测的技术趋势及未来发展的新方向!公众号ID|ComputerVis...

笔记本硬件有linux驱动吗,为什么大多数的笔记本没有linux的驱动_weixin_39939530的博客-程序员ITS301

笔记本电脑无线上网方式全攻略您是否有过这样的经历:当在外面急需上网办理一些事情时,却只能无奈望着您的宝贝笔记本电脑发出声声叹息呢!重要的生意、宝贵的订单……就这样被错过!但无线上网方式出现后,以上的这些问题都不再棘手。通过无线上网,您可以用最方便的方法、最快捷的速度收发重要的电子邮件或上网查询各种资料。迅驰技术推出后,笔记本用户已经抢在很多人前头尝到了无线上网的滋味。先不要羡慕那些抱着迅驰笔记本、...

C语言中rand()不是线程安全的函数-多线程应使用rand_r()_xhxhxhxhx的博客-程序员ITS301_c语言rand_r

这是glibc中的rand_r的实现:/* This algorithm is mentioned in the ISO C standard, here extended for 32 bits. */intrand_r (unsigned int *seed){ unsigned int next = *seed; int result; next *= 1103...

Date转String String 转Date_装傻成功的博客-程序员ITS301_date 转string

一、Date转StringSimpleDateFormat   formatter = new SimplDateFormat("yyyy-MM-dd HH:mm:ss");Date date = new Date;String str = formatter.format(date);二、String转DateSimpleDateFormat   formatter = ne

推荐文章

热门文章

相关标签