目录函数以及链接文件

一、对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.c
	gcc main.c add.c mul.c -o a.out 

clean:
	rm a.out 

示例二

a.out:main.c add.c mul.c
    gcc $^ -o $@//^ 依赖 @ 目标

示例三

SRC=main.c
SRC+=add.c mul.c
OBJ=all
$(OBJ):$(SRC)
    gcc $(SRC) -o $(OBJ)
clean:
    rm $(OBJ)

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值