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;
}