linux目录操作函数

目录基本操作函数

目录操作
1,打开目标目录 
2.读取目录  
3.关闭目录 
目录 当文件看,只不过操作函数和操作文件函数不一样。

opendir

DIR *opendir(const char *name);
  • 功能:

打开一个目录获得一个目录流指针

  • 参数:

name:目录名

  • 返回值:

成功返回目录流指针        失败返回NULL

readdir

struct dirent *readdir(DIR *dirp);
  • 功能:

从目录流中读取文件信息并将保存信息的结构体地址返回

  • 参数:

dirp:目录流指针

  • 返回值:

包含文件信息的结构体        出错或者读到目录流末尾返回NULL

closedir

关闭目录 

 int closedir(DIR *dirp);
  • 功能:

关闭之前已经打开的目录流对象

  • 参数:

opendir的返回结果中目录流对象

  •  返回值:

成功  0        失败   -1

实现ls步骤:

DIR * dir = opendir("./");

Struct dirent*info = readdir(dir);//readdir一次读一个

closedir(dir);

int main(int argc, char *argv[])
{
    DIR * dir = opendir("./");
    if(NULL == dir)
    {
        fprintf(stderr,"opendir errpr\n");
        return 1;
    }
    while(1)
    {
        struct dirent * info = readdir(dir);
        if(NULL == info)
        {
            break;
        }
        printf("%s\n",info->d_name);
    }

    closedir(dir);
    return 0;
}

命令函数

chdir  

//cd

int chdir(const char *path);// /home/linux
  • 功能:

改变当前程序的工作路径

  • 参数:

path:改变到的路径

  • 返回值:

成功返回0        失败返回-1

getcwd 

//pwd 

char *getcwd(char *buf, size_t size);
  • 功能:

获得当前的工作路径

  • 参数:

buf:保存工作路径空间的首地址
size:保存路径空间的长度(max)

  • 返回值:

成功返回包含路径空间的字符串首地址        失败返回NULL

mkdir 

int mkdir(const char *pathname, mode_t mode);//777  666 --x--x--x
  • 功能:

创建一个目录

  • 参数:

pathname:路径
mode:
mode & ~umask  0002

目录权限0777(x代表目录能不能来回切换)

umask新建文件和目录时起作用

  • 返回值:

成功返回0        失败返回-1

rmdir   

rm -fr    rmdir

int rmdir(const char *pathname);
  • 功能:

删除一个空目录文件(必须是空目录)

  • 参数:

pathname:目录文件的名字

  • 返回值:

成功返回0        失败返回-1

stat

int  stat(const  char  *path, struct stat *buf);
  • 功能:

获得文件的属性

  • 参数:

path: 文件的路径
buf:  属性存放空间的首地址

  • 返回值:

成功返回0
失败返回-1

linux中文件名和文件内容分开存储(靠Inode匹配,Inode文件在硬盘上的编号)

时间函数

time

tm = time(NULL);
  • 功能:

获得1970年到现在的秒数

  • 参数:

t:存放秒数的空间首地址

  • 返回值:

成功返回1970年到现在的秒数
失败返回-1

time() 函数用于获取当前时间点自1970年1月1日0时0分0秒(UTC时间)以来的秒数。这通常被称为“时间戳”。

time_t time(time_t *t);

参数理解

  • t:这是一个指向 time_t 类型变量的指针。如果 t 不是 NULLtime() 函数会将获取到的时间戳存储在 t 指向的变量中。
  • 如果 tNULL,则该函数仅返回时间戳,而不存储在任何地方。

localtime

struct tm *localtime(const time_t *timep);
  • 功能:

将一个秒数转化成日历时间

  • 参数:

timep:保存秒数空间的地址

  • 返回值:

成功返回保存日历时间结构体的指针
失败返回NULL

struct tm 
 {
int tm_sec;         /* seconds */
int tm_min;         /* minutes */
int tm_hour;        /* hours */
int tm_mday;        /* day of the month */
int tm_mon;         /* month */
int tm_year;        /* year */
int tm_wday;        /* day of the week */
int tm_yday;        /* day in the year */
int tm_isdst;       /* daylight saving time */
};

ctime

char *ctime(const time_t *timep);//date
  • 功能:

将时间秒数转化成字符串

  • 参数:

timep:保存时间空间的地址

  • 返回值:

成功返回获得时间字符串的首地址
失败返回NULL

根据id获得信息

getpwuid

struct passwd *getpwuid(uid_t uid);
  • 功能:

根据用户id到/etc/passwd文件下解析获得结构体信息

  • 参数:

uid:用户id

  • 返回值:

成功返回id对应用户的信息
失败返回NULL

getgrgid

struct group *getgrgid(gid_t gid);
  • 功能:

根据gid到/etc/group文件中解析组信息

  • 参数:

gid:组id

  • 返回值:

成功返回组信息
失败返回NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值