嵌入式学习第二十二天

一.获取文件属性有关函数的补充

1.getpwuid

struct passwd *getpwuid(uid_t uid);
功能:
根据用户id到/etc/passwd文件下解析获得
结构体信息
参数:
uid:用户id
返回值:
成功返回id对应用户的信息
失败返回NULL

2.getpwnam

struct passwd *getpwnam(const char *name);
功能:
根据用户名到/etc/passwd文件下解析获得
结构体信息

struct passwd 
{
char   *pw_name;       /* username */
char   *pw_passwd;     /* user password */
uid_t   pw_uid;        /* user ID */
gid_t   pw_gid;        /* group ID */
char   *pw_gecos;      /* user information */
char   *pw_dir;        /* home directory */
char   *pw_shell;      /* shell program */
           };

3.getgrgid

struct group *getgrgid(gid_t gid);
功能:
根据gid到/etc/group文件中解析组信息
参数:
gid:组id
返回值:
成功返回组信息
失败返回NULL

4.tm = time(NULL);

功能:
获得1970年到现在的秒数
参数:
t:存放秒数的空间首地址
返回值:
成功返回1970年到现在的秒数
失败返回-1

5.localtime

struct tm *localtime(const time_t *timep);
功能:
将一个秒数转化成日历时间
参数:
timep:保存秒数空间的地址
返回值:
成功返回保存日历时间结构体的指针
失败返回NULL

6.ctime
char *ctime(const time_t *timep);//date
功能:
将时间秒数转化成字符串
参数:
timep:保存时间空间的地址
返回值:
成功返回获得时间字符串的首地址
失败返回NULL

7.symlink

int  symlink(const  char  *oldpath, const char *newpath);
功能:
创建一个链接向oldpath文件的新符号链接文件
参数:
oldpath:被链接向的文件的路径
newpath:新符号链接文件
返回值:
成功返回0
失败返回-

8.remove

int remove(const char *pathname);
功能:
删除一个文件
参数:
pathname:删除文件的路径
返回值:
成功返回0
失败返回-1

9.rename //mv rename

int  rename(const  char  *oldpath,  const char *newpath);
功能:
将一个老的路径名改为新的路径
参数:
oldpath:老路径名
newpath:新路径名
返回值:
成功返回0
失败返回-1

10.link ln 1 2 

int  link(const char *oldpath, const char *newpath);
功能:
创建一个硬链接文件
参数:
oldpath:要链接向的文件
newpath:创建的新硬链接文件
返回值:
成功返回0
失败返回-1

二.出错相关函数的接口

1.truncate
出错相关函数接口
#include <errno.h>
 open(); ==-1  errno 
errno.h头文件中声明errno是一个外部存储整型变量
extern int errno;
errno == 0 没有任何错误
errno置位

2.perror(使用较多)
void perror(const char *s);-->strerror()
功能:
打印s字符串和errno对应的错误信息
参数:
s:要打印在终端上的出错信息
返回值:
缺省

3.strerror

char *strerror(int errnum);
功能:
打印errnum出错码对应的出错信息
参数:
errnum:出错errno号
返回值:
成功返回对应的错误信息
ruturn 1;

errnum:错误码
format:
类似printf打印
返回值:
缺省
__FILE__ 表示是那个文件
__LINE__表示第几行
__func__表示在那个函数
__DATE__
__TIME__
c 内置宏

makefile   工程管理工具

vim编辑器            gcc 编译器           gdb 调试器        make

写法与脚本相同

1.
a.out:main.c add.c mul.c
    gcc main.c add.c mul.c -o a.out 

clean:
    rm a.out 
 
2.
a.out:main.c add.c mul.c
    gcc $^ -o $@ 

clean:
    rm a.out 
 

3.
SRC=main.c 
SRC+= add.c mul.c 
OBJ=all

FLAG= -g -O2 -Wall
$(OBJ):$(SRC)
    gcc $(SRC) -o $(OBJ) $(FLAG)

clean:
    rm $(OBJ)
 

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第十二届蓝桥杯嵌入式竞赛是中国著名的计算机竞赛之一,也是我国嵌入式技术领域的重要比赛。本次比赛分为个人赛和团体赛两个部分,旨在提高参赛选手在嵌入式技术领域的创新能力和实践能力。 参赛选手需要通过开发具有特定功能的嵌入式系统来完成比赛任务。这不仅要求选手具备扎实的嵌入式技术知识,还需要灵活运用所学的理论知识,具备良好的实践能力和创新意识。 比赛的题目设计涵盖了嵌入式系统的各个方面,如硬件设计、软件开发、通信协议等。选手需要根据比赛的要求进行嵌入式系统的设计和开发,同时考虑系统的性能、功耗、可靠性等因素,以及解决实际问题的能力。 参与蓝桥杯嵌入式竞赛不仅可以让选手通过实践提升嵌入式技术能力,还能锻炼选手的综合能力和团队合作精神。在比赛中,选手不仅要独立完成任务,还需要与队友密切配合,共同克服各种困难和挑战。 此外,蓝桥杯嵌入式竞赛还为参赛选手提供了一个与业界专家进行交流和学习的机会。在比赛过程中,选手可以与专业人士交流经验,了解行业最新动态,提高自身的专业能力和综合素质。 总之,蓝桥杯嵌入式竞赛是一个很好的展示和提升嵌入式技术能力的平台。通过参与比赛,选手可以提高自己的实践技能、创新能力和解决问题的能力,为未来在嵌入式领域的发展奠定坚实基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值