头文件mkdir linux,判断目录是否存在并创建mkdir

Linux下mkdir函数

头文件库:

#include

#include

函数原型:

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

函数说明:

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

返回值:

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

mode方式:

S_IRWXU

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

S_IRUSR(S_IREAD)

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

S_IWUSR(S_IWRITE)

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

S_IXUSR(S_IEXEC)

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

S_IRWXG

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

S_IRGRP

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

S_IWGRP

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

S_IXGRP

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

S_IRWXO

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

S_IROTH

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

S_IWOTH

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

S_IXOTH

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

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

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

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

********************************************************************

linux c关于目录是否存在,新建目录等操作

1. 创建目录

#include

#include

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

运用条件:只能在已存在的目录下建立一级子目录

返回值:  返回0表示成功,返回-1表述出错。

mode 表示新目录的权限,可以取以下值:

其中,mode就用0777,0755这种形式。

2. 判断一个目录是否存在

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

#include

#include

DIR *opendir(const char *name);

The  opendir()  function  opens  a  directory  stream  corresponding to the directory name, and returns a pointer to the directory

stream.  The stream is positioned at the first entry in the directory.

代码

#include

#include

#include

#include

int main()

{

if(NULL==opendir("/d1/liujian/readdb/adTest/data/html"))

mkdir("/d1/liujian/readdb/adTest/data/html",0775);

return 0;

}

以上代码可以测试一个目录是否存在,如果不存在就创建这个目录。

***********************************

#include

#include

#include

#include

#include

#include

#include

externinterrno;

#define MODE (S_IRWXU | S_IRWXG | S_IRWXO)

intmk_dir(char*dir)

{

DIR *mydir = NULL;

if((mydir= opendir(dir))==NULL)//判断目录

{

intret = mkdir(dir, MODE);//创建目录

if(ret != 0)

{

return-1;

}

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

}

else

{

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

}

return0;

}

intmk_all_dir(char*dir)

{

boolflag =true;

char*pDir = dir;

while(flag)

{

char*pIndex = index(pDir,'/');

if(pIndex != NULL && pIndex != dir)

{

charbuffer[512] = {0};

intmsg_size = pIndex - dir;

memcpy(buffer, dir, msg_size);

intret = mk_dir(buffer);

if(ret 

{

printf("%s created failed!/n", dir);

}

}

elseif(pIndex == NULL && pDir == dir)

{

printf("dir is not directory!/n");

return-1;

}

elseif(pIndex == NULL && pDir != dir)

{

intret = mk_dir(dir);

if(ret 

{

printf("%s created failed!/n", dir);

}

break;

}

pDir = pIndex+1;

}

return0;

}

intmain()

{

charbuffer[512] = {0};

printf("please input path mane/n");

fgets(buffer, sizeof(buffer), stdin);

char*pIndex = index(buffer,'/n');

if(pIndex != NULL)

{

*pIndex = '/0';

}

printf("check path mane %s/n", buffer);

intret = mk_all_dir(buffer);

if(ret 

{

printf("% mkdir failed!/n", buffer);

return-1;

}

return0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值