提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、文件属性
1.函数接口
1.stat
int stat(const char *path, struct stat *buf);
功能:
获得文件属性
参数:
path文件路径
buf存放文件属性的结构体变量
返回值:
失败返回-1
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
2.getpwuid
struct passwd *getpwuid(uid_t uid);
功能:
获得uid所对应的用户信息
参数:
uid:用户uid
返回值:
成功返回结构体信息
失败返回NULL
3.getgrgid
struct group *getgrgid(gid_t gid)
功能:
获得gid对应的组名
参数:
gid
返回值:
成功返回结构体信息
失败返回NULL
4.time
time_t time(time_t *t)
功能:获得1970年1月1日到现在的秒数
参数
返回值
4.localtime
struct tm *localtime(const time_t *timep);
功能:
将time_t类型时间转换为本地时间
参数:
timep:存放秒数空间首地址
返回值:
成功返回结构体指针
失败返回NULL
功能:获得1970年1月1日到现在的秒数
参数
返回值
二、功能实现
1.ls
#include "head.h"
int main(int argc, const char *argv[])
{
if(argc != 2)
{
printf("input error\n");
return -1;
}
struct stat buf;
int ret = stat(argv[1],&buf);
if( -1== ret)
{
perror("stat error");
return -1;
}
//文件类型
#if 0
if( S_ISREG(buf.st_mode))
{
putchar('-');
}
else if(S_ISDIR(buf.st_mode))
{
putchar('d');
}
else if(S_ISCHR(buf.st_mode))
{
putchar('c');
}
else if(S_ISFIFO(buf.st_mode))
{
putchar('p');
}
else if(S_ISBLK(buf.st_mode))
{
putchar('b');
}
else if(S_ISLNK(buf.st_mode))
{
putchar('l');
}
else if(S_ISSOCK(buf.st_mode))
{
putchar('s');
}
putchar('\n');
#endif
//文件类型
switch(buf.st_mode & S_IFMT)
{
case S_IFSOCK:putchar('s');break;
case S_IFIFO:putchar('p');break;
case S_IFLNK:putchar('l');break;
case S_IFREG:putchar('-');break;
case S_IFBLK:putchar('b');break;
case S_IFDIR:putchar('d');break;
case S_IFCHR:putchar('c');break;
deflaut:break;
}
//执行权限
//owner
buf.st_mode & S_IRUSR ? putchar('r'):putchar('-');
buf.st_mode & S_IWUSR ? putchar('w'):putchar('-');
buf.st_mode & S_IXUSR ? putchar('x'):putchar('-');
//group
buf.st_mode & S_IRGRP ? putchar('r'):putchar('-');
buf.st_mode & S_IWGRP ? putchar('w'):putchar('-');
buf.st_mode & S_IXGRP ? putchar('x'):putchar('-');
//other
buf.st_mode & S_IROTH ? putchar('r'):putchar('-');
buf.st_mode & S_IWOTH ? putchar('w'):putchar('-');
buf.st_mode & S_IXOTH ? putchar('x'):putchar('-');
//硬链接个数
printf(" %d",buf.st_nlink);
//个人用户
struct passwd *uid ;
uid = getpwuid(buf.st_uid);
printf(" %s",uid->pw_name);
//组用户
struct group *gid = getgrgid(buf.st_gid);
printf(" %s",gid->gr_name);
//文件大小
printf(" %ld",buf.st_size);
//date
time_t tm;
time(&tm);
struct tm *ptm;
char *mon[12] = {
"Jan","Feb","Mar","Apr","May","Jun"
,"Jul","Aug","Sep","Oct","Nov","Dec"
};
ptm = localtime(&tm);
printf(" %s %02d %02d:%02d",mon[ptm->tm_mon],ptm->tm_mday
,ptm->tm_hour,ptm->tm_min);
printf(" %s\n",argv[1]);
return 0;
}
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。