自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

转载 C语言高级用法---container_of()

注:本文转载自https://blog.csdn.net/rosetta/article/details/90751028在Linux内核源码中,实现和链表相关的接口list_entry()时,会调用container_of()宏定义,它的作用是:给定结构体中某个成员的地址、该结构体类型和该成员的名字获取这个成员所在的结构体变量的首地址。有点绕,没关系,接着往下看就能明白了。container_of()宏定义实现如下所示/** * container_of - cast a member of a

2022-03-25 15:13:34 386

转载 C语言高级用法---typeof()关键字

注:本文转载自https://blog.csdn.net/rosetta/article/details/90741468前言typeof() 是GUN C提供的一种特性,可参考C-Extensions,它可以取得变量的类型,或者表达式的类型。本文总结了typeof()关键字的常见用法,并给出了相应的例子,以加深理解 。typeof()关键字常见用法typeof()关键字常见用法一共有以下几种。不用知道函数返回什么类型,可以使用typeof()定义一个用于接收该函数返回值的变量#include

2022-03-25 15:06:50 706

转载 libubox-blob/blobmsg

注:此文章转载自https://www.cnblogs.com/embedded-linux/p/6792359.html大部分内容来自libubox [3] - BLOB BLOGMSG,推荐阅读原文。blob提供二进制数据处理能力。有几种支持的数据类型,并可以创建块数据在socket上发送。整型数字会在libubox库内部转换为网络字节序进行处理。二进制块的处理方法是创建一个TLV(类型-长度-值)链表数据,支持嵌套类型数据,并提供设置和获取数据接口。blob定义在blob.h中。blogmsg

2022-03-21 10:44:00 2613

原创 shell脚本读取文件的三种方法

最近做小项目需要用到shell脚本写测试用例,所以首先要知道shell该怎么读取文件,为了以后能更容易复习,就把它记录了下来。第一种:#!/bin/bash while read line do echo $line done < filename示例:要读取的文件我这里四test.txt第二种:#!/bin/bashcat filename | while read linedo echo $linedone第三种:#!/bin/bashf.

2021-04-05 23:22:00 26272 1

原创 进程间通信(进程的分类、基本概念、父子进程、孤儿进程、僵尸进程、进程的创建、进程的异常终止、fork与vfork的区别

最近在学习进程间通信,以下是我的学习笔记,仅作参考进程基本概念: 1、进程与程序 程序就是存储在磁盘上的可执行文件,程序被加载到内存中开始运行叫进程。一个程序可以被多次加载生成多个进程,进程就是处于活动状态的计算机程序。 2、进程的分类 进程一般分为三种类型:交互进程、批处理进程、守护进程。 守护进程一般都处于活跃状态,运行在后台,由于系统在开机时通过启动脚本自动创建的。 3、查看进程 简单形式:ps 显示当前用户有控

2020-10-06 00:20:31 194

原创 文件同步、文件属性、文件的权限、修改文件的大小以及相关操作的函数

文件同步:1、在写入数据时内存与磁盘之间也有一个缓冲区,这种机制降低了磁盘读写次数,提高了读写的效率。2、但这种机制带来的后果就是磁盘中的数据与实写入的数据不匹配,系统提供了一个函数可以让缓冲区中的数据立即写入到磁盘。void sync(void);功能:把缓冲区中的数据同步到磁盘注意:并不等到数据同步完成后才返回,而是把缓冲区的数据加入到写入队列。int fsync(int fd);功能:把指定文件的内容从缓冲区同步到磁盘注意:会等到完全定稿磁盘才返回int fdatasync(in

2020-10-06 00:06:25 232

原创 利用C语言编写简易的网络聊天室

网络聊天室业务逻辑:1、客户端注册名字2、告诉所有在线的客户端,XXX进入聊天室3、新建一个线程为该客户端服务,随时接收客户端发送来的消息4、当接收到一个客户端的消息时,向每一个客户端转发一份(群聊)5、同时在线人数最多50人任何客户端可以随意随时进入或退出客户端服务端代码server.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>

2020-10-05 23:57:22 4018 1

原创 Linux内存管理(进程映像、虚拟内存)

一、内存管理用户层:STL 自动分配/释放内存 调用C++C++ new/delete 调用CC malloc/free 调用POSIXPOSIX brk/sbrk 调用LinuxLinux mmap/munmap 调用内核系统层kernal kmalloc/vmalloc 调用驱动driver get_free_p

2020-09-25 21:11:31 256

原创 学生信息管理系统

写程序之前先考虑好大致的思路,构出一个框架很重要此项目没有商业价值,练习学习过的知识点。学生:姓名 性别 学号 密码 语文 数学 英语1、第一次登录强制修改密码。2、查询成绩排名 不显示姓名和学号。平均分最高分最低分3、修改密码4、查看个人信息5、三次密码错误锁定帐号,由教师解锁教师:姓名 性别 工号 密码1、第一次登录强制修改密码。2、添加学生(学生的学号自动生成)单个添加批量导入3、删除学生输入两人次学号确定删除的学生要记录保存在已退学的文件中4、查找学生按姓

2020-09-14 14:59:31 426 2

原创 类型限定符

类型限定符:auto 用于定义自动分配、释放内存的变量(局部变量),不加就代表加。注意:全局变量不能用它修饰。C11 标准中用于自动类型识别auto num = 3.14;extern声明变量,意思是此变量在别处已经定义,请放心使用。但只临时满过编译时间,链时如果找不到依然会报错。static改变存储位置:改变局部变量的存储位置,由stack改为data或bss。被它修饰过程的局部变量也叫静态局部变量。延长生命周期:延长局部变量的生命周期。限制作用域:限制全局变量、函数只能在本

2020-07-16 20:20:07 394

原创 推箱子C语言代码

#include<stdio.h>#include<stdlib.h>#include<getch.h>//调用getch函数int main(){ char arr[8][8] = { {0,0,3,3,3,3,0,0}, {0,0,3,5,5,3,0,0}, {0,3,3,0,5,3,3,0}, {0,3,0,0,4,5,3,0}, {3,3,0,4,0,0,3,3}, {3,0,0,3,4,4,0,3}, {3,0,0,2,0,

2020-07-13 20:48:13 2117

原创 输入一个年月日,计算这一天到公元元年有多少天

#include <stdio.h>#include <stdint.h>int main(int argc,const char* argv[]){ uint16_t year = 0 , month = 0 , day = 0;//初始化年月日 printf("请输入一个日期:"); scanf("%hu%hu%hu",&year,&month,&day); int arr[12] = {31,28,31,30,31,30,31,31,3

2020-07-12 21:49:32 1956

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除