一、对stat里面的用户名时间做处理的函数
1.1.getpwuid()
struct passwd *getpwuid(uid_t uid);
功能: 根据用户id到/etc/passwd文件下解析获得 结构体信息
参数: uid:用户id
返回值: 成功返回id对应用户的信息 失败返回NULL
1. 2.getgrgid()
struct group *getgrgid(gid_t gid);
拿到组的结构体
功能: 根据gid到/etc/group文件中解析组信息
参数: gid:组id
返回值: 成功返回组信息 失败返回NULL
1.3 time()
1.获取秒数 CTS 北京时间
2.转换为需要个格式 系统时间的获取: 1.time 获得秒数
time_t time(time_t *t);
time_t 类型变量
第一种 准备一个变量,取地址,系统会将数据写入到变量里面
time_t tm;
time(&tm)
第二种
tm = time(NULL); 功能: 获得1970年到现在的秒数 第一步,先获得秒数再转成其他时间 参数: t:存放秒数的空间首地址 返回值: 成功返回1970年到现在的秒数 失败返回-1
1.4.ctime()
char *ctime(const time_t *timep);//date
功能: 将时间秒数转化成字符串
参数: 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 *
/ };
1.5 localtime()
struct tm *localtime(const time_t *timep);
功能: 将一个秒数转化成日历时间
参数: timep:保存秒数空间的地址
返回值: 成功返回保存日历时间结构体的指针 失败返回NULL
注意
年+1900 月+1
1.6 上色
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。 转义序列是以 ESC 开头,可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27, = 用八进制表示的 33)。
\033[显示方式;前景色;背景色m
显示方式:0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
前景色:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)
背景色:40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋红)、46(青色)、47(白色)
\033[0m 默认 \033[1;32;40m 绿色\033[1;31;40m 033[1;31;40m 红色
printf( "\033[1;31;40m 输出红色字符 \033[0m" )
二、链接文件
2.1 symlink()
软链接文件、符号链接文件 硬链接文件
命令行:ln -s 123
softlink 快捷方式
1.symlink int symlink(const char *oldpath, const char *newpath);
第一个是路径(被操作对象,路径写全),第二个新起的文件名
功能: 创建一个链接向oldpath文件的新符号链接文件
参数: oldpath:被链接向的文件的路径 newpath:新符号链接文件
返回值: 成功返回0 失败返回-1
2.2.remove()
remove 对应 rm -fr 只能删文件 不能删目录,如果要删目录,则里面需要进行判断一下,如果是目录。
调用一下rmdir int remove(const char *pathname);
功能: 删除一个文件 参数: pathname:删除文件的路径
返回值: 成功返回0 失败返回-1
2.3 rename()
//mv rename 相当于mv(改名字,文件剪切 )
int rename(const char *oldpath, const char *newpath);
功能:只能改名字 将一个老的路径名改为新的路径
参数: oldpath:老路径名 老名字 newpath:新路径名 新名字
返回值: 成功返回0 失败返回-1
2.4.link()
ln 1 2 int link(const char *oldpath, const char *newpath);
功能: 创建一个硬链接文件
参数: oldpath:要链接向的文件 newpath:创建的新硬链接文件
返回值: 成功返回0 失败返回-1
2.5 truncate()
清空文件 ,修剪也可以把文件变成自己想的那么大
小的就删,大的用\0 去填充
注意要对文件进行修改的话,要确保这个文件是存在的,要不然没有办法进行修改。
三、出错相关函数接口
3.1 .perror()
系统可以提供具体错误的原因,不需要自己手动的去写
void perror(const char *s);-->strerror() *s 起标识作用,一般写上一个函数,因为一个程序错误可能很多,所以要知道是那个,注意文件错误了,就结束,不要在往下走了,这个函数只有打印错误信息,没有结束功能。
功能: 打印s字符串和errno对应的错误信息
参数: s:要打印在终端上的出错信息
返回值: 缺省
3.2.strerror()
系统错误大概130多个,可以多写编号,意味着扩展
char *strerror(int errnum);给的数字,系统会自定义错误号
功能: 打印errnum出错码对应的出错信息
参数: errnum:出错errno号
返回值: 成功返回对应的错误信息 ruturn 1;
3.3.error()
===>>>exit();
比较复杂的错误
void error(int status, int errnum, const char *format, ...);
功能: 2个功能 程序出错打印对应出错原因和用户输入字符串并退出
参数:
status:程序退出的状态 EXIT_FAILURE 1 EXIT_SUCCESS 0
errnum:错误码 format: 类似printf打印
返回值: 缺省
注意
1.退出状态(0/1)
2.错误号,将错误号传进去
3.代表字符串printf 打印l
./a.out 里面有errno就是错误号,加头文件errno.h
c 内置宏
--FILE --表示是那个文件
LINE表示第几行
func表示在那个函数
DATE TIME c 内置宏
四、Makefile 文件编写
4.1 makefile 定义
MAKEFILE 编写 规则文件(事先写好一次)
多个.c 编译
Makefile 编写 工程管理工具
vim 编辑器,gcc 编译器 ,gdb 调试器 (逻辑错误) make
4.2 编写
示例一
a.out:main.c add.c mul.cgcc main.c add.c mul.c -o a.out clean:rm a.out
示例二
a.out:main.c add.c mul.cgcc $^ -o $@//^ 依赖 @ 目标
示例三
SRC=main.c
SRC+=add.c mul.c
OBJ=all
$(OBJ):$(SRC)gcc $(SRC) -o $(OBJ)
clean:rm $(OBJ)