目录函数以及链接文件

news2024/11/15 11:46:46
一、对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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第1章 第2节 数据的表示(软件评测师)

1.若某计算机采用8位整数补码表示数据,则运算(1271)将产生溢出 【解析】8位整数补码表示的整数范围:-128~127 2.采用(补码)表示带符号数据时,算术运算过程中符号位与数值位采用同样的运算规则…

java框架介绍

Java框架是Java开发中不可或缺的一部分,它们为开发者提供了预定义好的软件架构、类和接口,以及编程规范,从而简化了Java应用程序的开发过程。下面我将详细介绍Java框架的几个方面: 一、Java框架的定义 Java框架是一种为了解决特定…

bootstrap之表格

通过添加 .table-striped class&#xff0c;您将在 <tbody> 内的行上看到条纹 通过添加 .table-bordered class&#xff0c;您将看到每个元素周围都有边框&#xff0c;且占整个表格是圆角的 <!DOCTYPE html> <html><head><meta charset"utf…

UBD分层结构的学生信息管理系统(python+pysimplegui+mysql)

目录 作者的吐槽 介绍流程 UBD的结构 UBD的流程图&#xff08;也称不上流程图吧&#xff09; UBD的优缺点 优点 缺点 系统 设计结构 UI UI的一些图片 UI的代码 Business 数据库的连接&#xff08;json&#xff09; Data 总结 作者的吐槽 当知道UBD分层结构之后…

西安产业园排名新趋势,西安国际数字影像产业园以创新驱动发展?

近年来&#xff0c;随着数字经济的快速发展&#xff0c;西安产业园排名也在不断变化。其中&#xff0c;西安国际数字影像产业园凭借其卓越的创新能力和前瞻性的发展战略&#xff0c;迅速崭露头角&#xff0c;成为西安乃至全国数字影像产业的重要推动力量。那么&#xff0c;西安…

elementPlus中el-table的每列两行溢出隐藏怎么设置

el-table的每列两行溢出隐藏怎么设置 elementPlus中的el-table如何设置多行溢出隐藏table中的table属性中有show-overflow-tooltip属性&#xff0c;但是只支持单行溢出隐藏如何改成两行呢&#xff1f;在审查元素中我们发现.el-tooltip这个类名是溢出隐藏的样式&#xff0c;原本…

lvs项目

实验环境 LVS:Linux Virtual Server&#xff0c;负载调度器&#xff0c;内核集成章文嵩&#xff0c;阿里的四层SLB(ServerLoadBalance)是基FLVSkeepalived实现。 一、lvs-net模式 搭建环境以及网络配置 给lvs地址 修改eth1 lvs中打开内核路由功能 sysctl -a | greo ip_forwa…

【总】前端 Swagger url 自动转 JavaScript方法(避免重复工作...)

前言 随着项目增多&#xff0c;且多数为项目定制化接口。避免前端重复封装&#xff0c;从 Swagger 入手&#xff0c;将 url 自动转 js 方法直接用。特别节约时间和资源~ Swagger 简介 Swagger 一款 RESTFUL 接口的、基于 YAML、JSON 语言的文档在线自动生成、代码自动生成的…

Metasploit——强大的渗透测试框架

一、引言 在网络安全领域&#xff0c;渗透测试是评估系统安全性的重要手段。而 Metasploit 作为一款知名的渗透测试框架&#xff0c;为安全研究人员和测试人员提供了强大的工具和资源。本文将详细介绍 Metasploit 的特点、功能、使用方法以及在实际场景中的应用。 二、Metasp…

cad文字转arcgis注记

cad中文字转为arcgis注记&#xff0c;步骤如下&#xff1a; 1、将dwg文件下annotation文件加到图层中 2、文件点击右键&#xff0c;转换地理数据库注记 3、 导入默认地理数据库中&#xff0c;或自己新建地理数据库&#xff0c;起个文件名、点确定&#xff08;注意&#xff1a…

Codeforces Round 916 (Div. 3) D 题 Three Activities

题目描述 Winter holidays are coming up. They are going to last for nn days. During the holidays, Monocarp wants to try all of these activities exactly once with his friends: go skiing;watch a movie in a cinema;play board games. Monocarp knows that, on …

Mysql主从脚本

注意&#xff1a;先执行从服务器的脚本&#xff0c;再执行主服务器脚本 执行脚本时&#xff0c;务必使用source 脚本名称执行脚本 两个脚本都运行完之后 主服务器配置 从服务器配置

Machine-Learning 机器学习

目录 基本概念与分类 工作原理 应用领域 发展趋势 机器学习中的深度学习是如何工作的&#xff0c;以及它如何影响其他机器学习算法&#xff1f; 在机器学习中&#xff0c;哪些特定的数据预处理技术最有效&#xff0c;特别是在处理大规模数据集时&#xff1f; 强化学习在…

DatenLord前沿技术分享 No.40

达坦科技始终致力于打造高性能 Al Cloud 基础设施平台&#xff0c;积极推动AI应用的落地。达坦科技通过软硬件深度融合的方式&#xff0c;提供高性能存储和高性能网络。为 AI 应用提供弹性、便利、经济的基础设施服务&#xff0c;以此满足不同行业客户对 AICloud 的需求。 在本…

AI全息手术:未来医疗的奇迹,你准备好了吗?

想象一下&#xff0c;未来的手术室中&#xff0c;医生们不再依赖二维的X光片或CT扫描&#xff0c;而是通过空中悬浮的三维全息影像&#xff0c;直观地观察和操作人体内部结构。这并非科幻电影中的场景&#xff0c;而是正在成为现实的AI全息影像手术技术。 手术室中的三维魔法 传…

SOEM 源码解析 ecx_eeprom_waitnotbusyAP

/* 在超时时间内、设置EEprom 状态机忙位busy→idle、APRD方法* param[in] context context struct* 上下文结构体* param[in] aiadr auto increment address of slave* 从站自增地址* param[in] timeout …

Java数据结构 | 树的常见习题一(考研题、面试题)

树的常见练习题一 1、一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反&#xff0c;则该二叉树一定满足&#xff08; &#xff09;2、在一颗度为3的树中&#xff0c;度为3的结点有2个&#xff0c;度为2的结点有1个&#xff0c;度为1的结点有2个&#xff0c;则叶子结点有&…

全志平台串口编号更改记录 A133 T527 T133 A523 A527串口编号更改

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3. 情况讨论 4.代码修改 5.彩蛋 1.前言 在嵌入式开发中,更改串口编号是一种常见的操作,以满足特定的硬件配置或调试需求。根据我们之前的文章 android13 串口编号修改 串口名修改-CSDN博客 在全志平台下面使…

如何成为具有竞争力的智能电表厂家

要成为具有竞争力的智能电表厂家&#xff0c;需要在多个方面进行深入布局和持续优化。以下是从市场定位、技术创新、产品质量、销售策略、客户服务以及合作伙伴关系等六个方面进行的详细分析&#xff1a; 一、明确市场定位与目标 市场细分&#xff1a;智能电表厂家需要明确自己…

未发先火,Smartbi AIChat频频“出圈”

近日&#xff0c;思迈特正式官宣&#xff0c;将于8月8日线上新品发布会上推出自研的全新AI应用——Smartbi AIChat&#xff0c;这款应用在还未正式推向市场前&#xff0c;已获得媒体、分析机构等多方关注&#xff0c;热度飙升&#xff0c;思迈特软件及其新品再一次成为业界内外…