Linux C 创建目录函数mkdir相关(转-清新居士)

摘要:
1.Linux C创建了目录函数mkdir的模式设置问题。原型:#includeintmkdir;参数:path是目录名,mode是目录权限返回值:成功返回0,错误返回-1,并设置errno值。二、C语言在Linux DirName[i]='/';}}下创建多级目录intCreateDir{charDirName[256];strcpy;int i,len=strlen;if(DirName[1len-1]!=0){if{perror;return-1;}}返回0;}3.Linux c编程:创建一个线程来监视目录。目录中出现新文件后,将文件传输到指定的目录(=NULL){if{continue;}//如果此目录中仍有一个目录,您可以在此处进行判断。//假设初始目录为空strcat;strcat;//如果进程资源很少,可以直接使用Linux系统命令fp1=fopen;如果{printf;return-1;}fp2=fopen;如果{printf;fclose;return-1;}而{//total+=读取大小;内存集;写入大小=fwrite;如果(写入大小!

I.Linux C 创建目录函数mkdir的mode设置问题

函数原型:

#include <sys/stat.h>

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

参数:

path是目录名

mode是目录权限

返回值:

返回0 表示成功, 返回 -1表示错误,并且会设置errno值。

mode模式位:

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

S_IRUSR
S_IREAD

S_IWUSR
S_IWRITE
S_IXUSR
S_IEXEC
S_IRWXU
This is equivalent to (S_IRUSR | S_IWUSR | S_IXUSR).
S_IRGRP
Read permission bit for the group owner of the file. Usually 040.
S_IWGRP
Write permission bit for the group owner of the file. Usually 020.
S_IXGRP
Execute or search permission bit for the group owner of the file. Usually 010.
S_IRWXG
This is equivalent to (S_IRGRP | S_IWGRP | S_IXGRP).
S_IROTH
Read permission bit for other users. Usually 04.
S_IWOTH
Write permission bit for other users. Usually 02.
S_IXOTH
Execute or search permission bit for other users. Usually 01.
S_IRWXO
This is equivalent to (S_IROTH | S_IWOTH | S_IXOTH).
S_ISUID
This is the set-user-ID on execute bit, usually 04000. See How Change Persona.
S_ISGID
This is the set-group-ID on execute bit, usually 02000. See How Change Persona.
S_ISVTX
This is the sticky bit, usually 01000.

例子:

#include <sys/types.h> #include <sys/stat.h>
int status;

status = mkdir("/home/newdir", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);

这样就创建了一个newdir目录,权限通过ls -al 查看为

drwxr-xr-x

跟用linux命令mkdir创建的目录权限位一致。

II. linux下C语言创建多级目录

int CreateDir(const char *sPathName)
{
char DirName[256];
strcpy(DirName, sPathName);
int i,len = strlen(DirName);
if(DirName[len-1]!='/')
strcat(DirName, "/");
len = strlen(DirName);
for(i=1; i<len; i++)
{
if(DirName[i]=='/')
{
DirName[i] = 0;
if( access(DirName, NULL)!=0 )
{
if(mkdir(DirName, 0755)==-1)
{
perror("mkdir error");
return -1;
}
}
DirName[i] = '/';
}
}
return 0;
}

III.linux c 编程:创建一个线程,监视某个目录,一旦目录里出现新的文件,就将文件转移到指定的目录里去。

#define SRCPATH "srcpath/"
#define DSTPATH "dstpath/"

int movefile()
{
DIR *dir;
struct dirent *dt;
FILE *fp1,*fp2;
char filename1[256],filename2[256];
char buf[1024];
int readsize,writesize;

if((dir = opendir(SRCPATH)) == NULL)
{
printf("opendir %s error ",SRCPATH);
return -1;
}
memset(filename1,0,sizeof(filename1));
strcpy(filename1,SRCPATH);
memset(filename2,0,sizeof(filename2));
strcpy(filename2,DSTPATH);
while(1)
{
while((dt = readdir(dir)) != NULL)
{
if(strcmp(dt->d_name,".")==0||strcmp(dt->d_name,"..")==0)
{
continue;
}
//如果这个目录里 还有目录,可以在这加判断
//这里假设初始为空目录
strcat(filename1,dt->d_name);
strcat(filename2,dt->d_name);
//如果进程资源较少可以直接用linux系统命令

fp1 = fopen(filename1,"rb");
if(fp1==NULL)
{
printf("open %s failed /n",filename1);
return -1;
}

fp2 = fopen(filename2,"wb");
if(fp2==NULL)
{
printf("open %s failed /n",filename2);
fclose(fp1);
return -1;
}

while((readsize = fread(buf,sizeof(buf),1,fp1))>0)
{
//total += readsize;
memset(buf,0,sizeof(buf));
writesize = fwrite(buf,sizeof(buf),1,fp2);
if(writesize!==readsize)
{
printf("write error");
return -2;
fclose(fp1);
fclose(fp2);
}
}
fclose(fp1);
fclose(fp2);
rmdir(filename2);
}
}
}

int main(int argc,char **argv)
{
pthread_t id1;
int ret;
ret = pthread_create(&id1, NULL, (void*)movefile, NULL);
return ret;
}

免责声明:文章转载自《Linux C 创建目录函数mkdir相关(转-清新居士)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java算法-hash算法长连接&amp;amp;短连接分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux 关于安装rabbitmq以及开启远程访问权限步骤

1.安装依赖包 yum -y install ncurses-devel yum install openssl-devel yum install unixODBC-devel yum install gcc-c++ yum install perl yum install libxslt yum install rsync yum...

Debian下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

说明:  1、备份MySQL数据库存放目录/var/lib/mysql下面的osyunweidata数据库到/home/mysql_data里面,并且保存为osyunweidata_bak_2012_06_30.tar.gz的压缩文件格式(2012_06_30是指备份执行时当天的日期),最后只保留最近7天的备份 2、上传/home/mysql_data里面...

Linux 里Buffer和Cache的定义及使用

Buffer 和 Cache 的介绍 查看内存使用情况 # 注意不同版本的free输出可能会有所不同 $ free total used free shared buff/cache available Mem: 8169348 263524 68753...

linux 服务器配置 ASF 云挂卡

关于社区打不开:https://github.com/zyfworks/AnotherSteamCommunityFix 下载asf:https://github.com/JustArchi/ArchiSteamFarm/releases 依赖包: ubuntu: sudo apt-get install libunwind8 libunwind8-dev...

Linux下杀掉所有得java进程

--转自https://blog.csdn.net/oppo62258801/article/details/81434038 1.Linux查看所有Java进程 ps -ef | grep java | grep -v grep  (是在列出的进程中去除含有关键字"grep"的进程) 2. 使用awk分割结果,获取PID awk '{print $2}'...

Linux下配置Tomcat为系统服务并开机自启动

如果我们使用war 包进行部署项目的时候,需要把包放进Tomcat的目录下,为了使我们的服务能够在服务器重启的时候自动启动起来,我们需要把Tomcat设置成自起服务。 配置 Tomcat 服务 新建服务脚本[root@localhost ~]# vim /etc/init.d/tomcat 添加脚本内容#!/bin/bash# description: T...