Linux-unbuntu目录操作-8.chmod -- 功能 - 更改权限

时间:2024-01-27 07:16:44

打开目录:opendir

头文件:

#include<sys/types.h>
#include<sirent.h>

DIR *opendir(const char *name);

形参:name:要打开的目录的路径/名字

返回值:成功DIR *类型的目录流指针失败:返回NULL

关闭目录  closedir

头文件:

#include <sys/types.h>
#include <dirent.h>

int closedir(DIR *dirp);

形参:opendir的返回值

返回值:returns 0 on success.On error, -1 is returned

readdir -- 读取目录信息

头文件:

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

形参:dirp:opendir打开获取到的目录流指针

mkdir -- 创建目录

头文件:

<sys/stat.h> <sys/types.h>

函数原型iint mkdir(const char *pathname, mode_t mode);

参数

          pathname:文件路径/文件名

          mode:直接使用数字即可(权限)    

实际权限:mode &(~umask)

     返回值

          成功返回0,错误返回-1

rmdir --删除目录(只能删除空文件夹)

头文件:

#include<unistd.h>

参数:要删除目录路径,你也可以直接写argv[1]

     返回值

          成功返回0,错误返回-1

getcwd -- 获取当前工作的绝对路径

头文件:

#include<unistd.h>

功能:获取当前目录

     函数原型:char *getcwd(char *buf, size_t size);返回值

          成功返回指向当前目录的指针,和部分值一样,错误返回NULL

chdir -- 改变当前的工作路径

头文件:

#include<unistd.h>

函数原型

          int chdir(const char *path);

     所属头文件:          <unistd.h>

     参数

          path:文件路径

     返回值

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

chmod -- 功能 - 更改权限

头文件:

#include <sys/types.h>
 #include <sys/stat.h>

参数

          path :文件路径

          mode 权限

     返回值

          成功返回0失败-1

例题一:实现ls -i的功能(加一个文件类型)

#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <string.h>
#include<unistd.h>
char Fun(char c);
int main(int argc,char *argv[1])
{
    char path[1024]={0};
    if(argc<2)
    {
        strcpy(path,".");
    }
    else
    {
        strcpy(path,argv[1]);
    }
    DIR*dir=opendir(path);
    if(dir==NULL)//打开失败
    {
        perror("opendir");
        return -1;
    }
    struct dirent *p;
    while(p=readdir(dir))//一次只能读取一个文件信息
    {
        if(p->d_name[0]=='.')
        continue;//pass掉隐藏文件
        printf("%ld %s %c",p->d_ino,p->d_name,Fun(p->d_type));
    }
    return 0;
}
 char Fun(char c)
    {
        char d=0;
        switch(c)
        {
            case DT_REG:d='-';break;
        }
        return d;
    }

例题二:获取某一文件夹下的所有.c文件

#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <string.h>
#include<unistd.h>
int main(int argc ,char *argv[])
{
	char path[1024]={0};
	if(argc<2)//当前路径
	{
		strcpy(path,".");
	}
	else
	{
		strcpy(path,argv[1]);//查看其他路径内的.c文件
	}
   	DIR*dir=opendir(path);
	   struct dirent*p;
	   while(p=readdir(dir))
	   {
		   int n=strlen(p->d_name);
		   if((strcmp(p->d_name+n-2,".c"))==0)
		   printf("%s ",p->d_name);
	   }
   	return 0;
}
 

例题三:时间编程,做练习,localtime

#include<stdio.h>
#include<time.h>
int main()
{
    	time_t t=time(NULL);
   	// struct tm*p=localtime(&t); 
   	struct tm *p=localtime(&t);
    	printf("%d %d %d %d %d %d\n",p->tm_year+1900,p->tm_mon+1,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
    	//printf("%ld\n",t);
    return 0;
}