自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day30

* 当前主机IP地址 */sin.sin_addr.s_addr = inet_addr(SER_IP);

2024-08-13 20:46:14 474

原创 day29

功能:位套接字分配名称参数1:通过socket函数创建出来的套接字文件描述符参数2:通用地址信息结构体,需要根据具体使用的地址族而定, struct sockaddr仅仅只是为了类型的强制转换,防止出现警告跨主机间通信:man 7 ip/* 表示通信域 *//* 端口号的网络字节序 *//* ip地址 *//* IP地址的网络字节序 */同一主机间通信:man 7 uninx/* 表示通信域:AF_UNIX */

2024-08-12 19:36:35 720

原创 day28

/将2字节无符号整数的网络字节序转换为主机字节序,参数是网络字节序,返回值是主机字节序。//将4字节无符号整数的主机字节序转换为网络字节序,参数是主机字节序,返回值是网络字节序。//将2字节无符号整数的主机字节序转换为网络字节序,参数是主机字节序,返回值是网络字节序。//将4字节无符号整数的网络字节序转换为主机字节序,参数是网络字节序,返回值是主机字节序。基于上面的通信方式的弊端,我们引入了网络通信,基于套接字socket的通信方式,能够完成同一主机之间的多个进程间通信和跨主机的多个进程间的通信。

2024-08-09 18:26:15 525

原创 day27

信号量集主要完成多个进程之间同步问题。

2024-08-07 19:35:34 528

原创 day26

1> system V提供了三种IPC(interprocess communication)进程间通信方式消息队列:本质上在内核空间维护了一个队列,发送者可以将消息先放入到该队列上,接收者根据自己的需求读取队列上的信息共享内存:本质上在独立于多个进程外,分配一个物理内存的映射,使得多个进程可以共享该内存空间信号量集:将多个无名信号量,放入一个集合中,分别控制不同的进程,用于进程间同步问题。

2024-08-06 20:45:52 525

原创 day25

程序允许启动一个定时器,当所定的时间到位后,会发送一个SIGALRM信号,我们可以将该信号绑定到对应的信号处理函数中,从而导致,给定时间后,处理自定义函数。答:不能,多个进程之间的用户空间是相互独立的,每个进程的全局变量是各个进程独立拥有的,更改一个进程的全局变量,另一个进程不会受到影响,故而不能使用全局变量来完成通信。/**************************主程序*******************/1> 信号通信原理图:两个异步通信的进程之间,通过发送相关信号,完成任务间的通信。

2024-08-05 20:06:12 588

原创 day24

/定义全局变量//定义线程体1while(1)//从终端获取数据printf("请输入>>>");//定义线程体函数2while(1)//0.5秒执行一次/******************主程序**********************///创建两个任务=0)printf("task1 创建失败\n");return -1;=0)

2024-08-02 17:49:13 807

原创 day23

printf("我是主线程,tid = %#lx, 主线程线程号:%#lx\n", tid, pthread_self());/************************主程序*****************************//************************主程序*****************************//*******************主程序*********************/printf("成功回收了%#lx的资源\n", tid);

2024-08-01 19:12:34 748

原创 day22

1> 在进程的创建过程,其实就是通过拷贝父进程的task_struct结构体而来的,子进程中保存了大部分的父进程的遗传基因,只需要修改少部分的内容,如子进程的进程号,子进程的父进程号。1> 0号进程:也成为 idel 进程,他是操作系统启动后执行的第一个进程,这个进程也叫空闲进程,当没有其他进程执行时,系统会默认执行该进程。//定义文件描述符写入文件。3> 2号进程:也称kthreadd,该进程由0号进程产生,也成为调度进程,当某个就绪进程时间片轮到时,该进程负责进程的调度工作。

2024-07-31 21:39:10 654

原创 day21

是使用系统调用(内核提供的函数)来完成数据的读写操作,不提供缓冲区,基于文件描述符操作文件。每进行一次文件io操作,进程就会从用户空间向内核空间进行一次切换,效率没有标准io高。

2024-07-30 20:35:34 742

原创 day20

bmp图的资料链接:https://blog.csdn.net/XYK0318/article/details/105123197/。/* 年中天数 (0-365, 1 Jan = 0) *//************************主程序************************//**********************主程序*********************//**********************主程序*********************/

2024-07-29 21:07:35 674

原创 day19

1> IO:(inout output) 所谓IO,就是程序与外部设备进行信息交换的过程2> IO的分类:标准IO和文件IO3> 标准IO:调用封装好的相关库函数,来实现数据的输入输出4> 文件IO:调用系统(内核)提供的相关函数,来实现数据的输入输出5> 标准IO和文件IO的区别:1、标准IO属于库函数,文件IO属于系统调用2、标准IO操作的是文件指针,文件IO操作的是文件描述符3、标准IO有缓冲器,文件IO没有缓冲区。

2024-07-29 19:57:50 735

原创 day18

1 > 树形结构:表示数据元素之间存在一对多的关系2 > 树:是由一个根结点个多个子树构成的树形结构3 > 节点:就是树中的数据元素4 > 父亲结点:当前结点的直接上级节点5 > 孩子节点:当前结点的直接下级节点6 > 祖先结点:当前结点的直接或间接上级节点7 > 子孙节点:当前结点的直接或间接下级节点8 > 兄弟节点:拥有相同父结点的所有节点互称为兄弟节点9 > 堂兄弟节点:其父结点在同一层的所有节点,互为堂兄弟节点10 > 根结点:没有父结点的节点。

2024-07-24 20:21:13 924

原创 day17

1 > 队列也是操作受限的线性表:所有操作只能在端点处进行,其删除和插入必须在不同端进行2 > 允许插入操作的一端称为队尾,允许删除操作的一端称为队头3 > 特点:先进先出(FIFO)4 > 分类:顺序存储的队列称为顺序队列;链式存储的队列,称为链式队列。

2024-07-23 19:49:24 892

原创 day16

1 > 所谓双向链表,就是从任意一个节点既能存储其前驱节点信息也能存储后继节点信息2 > 节点结构体中增加一个指向前驱节点的指针unionint len;//头结点数据域//普通节点数据域//指向前驱节点的指针//指向后继节点的指针3 > 头结点没有前驱,最后一个节点没有后继。

2024-07-22 21:21:36 780

原创 day15

Plain Text自动换行//定义数据类型//定义结点类型unionint len;//头结点数据域//普通结点数据域//指针域//创建链表//申请结点封装数据函数//链表判空//头插//链表遍历函数//通过位置查找结点//任意位置插入//链表头删//链表任意位置删除//链表按值查找返回位置。

2024-07-19 21:34:15 689

原创 day14

按存储方式:顺序表:顺序存储的线性表称为顺序表链表:链式存储的线性表称为链表按操作受限的方式:栈:只允许在同一个端点处进行插入和删除操作的线性表队列:只允许在异端进行插入和删除操作的线性表。

2024-07-18 17:23:10 612

原创 day13

1 > 概念:由相同数据类型或不同数据类型构成的集合,但是,该集合中的成员共享同一块内存空间2 > 定义格式union 结构体名称成员类型1 成员变量1;成员类型2 成员变量2;。。。成员类型n 成员变量n;当程序员写程序时,可能会因为数据类型的问题,在定义变量时,导致该程序比较晦涩难懂,例如:unsigned long int,struct Stu为了提高代码的简洁性,以及为了更加方便理解使得代码更加优雅,我们可以将这些类型重新起一个简洁好记的名字。

2024-07-17 21:07:39 899

原创 day12

指针变量-- -- > 指向的一级指针中的地址*指针变量-- --->一级指针变量中的值**指针变量-- -- > 一级指针变量所指向内存空间中的值//定义一个普通变量int *ptr = # //将普通变量的地址赋值给指针变量//将指针变量的地址赋值给二级指针变量//通过普通变量访问值//通过一级指针变量访问值//通过二级指针变量访问值//该语句是错误的,C语言中所有表达式的结果都是一个右值//定义二维数组qtr = arr;//?//8//36。

2024-07-16 21:17:27 748

原创 day11

/定义多个变量//定义指针数组存储上面多个变量的地址//此时定义了三个指针变量,分别是 ptr_arr[0]//给指针变量赋值//通过指针数组操作数据i < 3;i++)//输出值i < 3;1、全局变量 2、静态局部变量3、主调函数以地址的形式传递到被调函数中的那块内存例如:char *strcpy();4、使用malloc函数动态申请的堆区空间//定义指针函数int *

2024-07-13 17:20:39 601

原创 day10

1> 一维数组的数组名,本质上是一个该数组的第一个元素的地址int arr[5];2> 数组名是一个地址常量,不能被重新赋值,但是,数组名可以进行偏移3> 二维数组的数组名,从数值上来说也是一个该数组第一个元素的地址。

2024-07-12 20:27:49 798

原创 day09

1> 引入目的:能够从地址的角度,找到内存中的数据,而不是以变量的角度去找,效率较高2> 指针:就是内存地址编号3> 指针变量:由于指针这个地址编号很难记忆,我们引入指针变量存储指针存储地址的变量称为指针变量4> 指针变量中,指针存储地址,作为一个特殊的数据类型,其大小是固定的 8 字节例如:int * ptr;

2024-07-11 20:30:47 767

原创 day08

char 数组名[常量1][常量2];常量1:表示的是定义的字符串的个数 参数2:表示的是每个字符串的最大长度+11> 系统会提供一些库函数供大家使用,但是,提供的函数毕竟有限,如果想要使用特别定制的函数,需要自己封装2> 对于一些重复调用的语句块而言,如果不加封装的话,会使得代码比较冗余3> 为了提高编程效率,我们引入了函数,能够做到一处修改,处处修改。

2024-07-10 21:09:42 947

原创 day07

printf("该字符串的字母有%d,数字有%d个 ,空格有%d个,其他字符有%d个\n", x, c, b, res-1);printf("请输入第%d行%d列的元素:",i+1,j+1);printf("第%d行的最大值为:%d",i+1,max[i]);printf("请输入第一个数组第%d个元素:",i+1);printf("请输入第二个数组第%d个元素:",i+1);printf("输入1注册,2登录,q退出:");printf("登录成功\n");printf("两个数组的交集为:\n");

2024-07-09 21:33:59 758

原创 day06

对于之前所学习的内容,都是对单个数据进行操作,只需要定义单个变量,然后对该变量进行处理即可。但是,如果对于庞大的数据而言,需要定义很多变量来解决,为了批量处理数据,我们引入了数组所谓数组,就是多个变量的集合。多个相同数据类型1、数据类型:可以是基本数据类型,也可以是构造数据类型、指针类型或者空类型2、数组名:标识符,要符合标识符的命名规则 1) 只能由字母、数字、下划线组成 2) 不能以数字开头 3) 不能使用关键字 4) 严格区分大小写 5) 做到见名知意。

2024-07-08 18:04:38 812

原创 day05

2.写程序实现功能:读入两个整数(data1和data2)和一个运算符(op),计算表达式data1 op data2 的值.其中op可以为+、-、*、/四个符号中的任一种(用switch语句实现)printf("%d不是回文数\n", i);printf("%d是回文数\n", i);printf("请输入两个数字与一个运算符\n");思路:将输入的两个数a,b中小的数a,依次加1,加到b的值,3.输入任意两个数,输出两数之间(包括这两个数)偶数之和。printf("请输入五位数\n");

2024-07-05 18:40:09 841

原创 day04

printf("错误,重新输入\n");printf("请输入年月日");终端输入一个日期,判断是这一年的第几天。闰年2月29天,平年2月28天。

2024-07-04 19:32:00 389

原创 常量·变量·符号

a/=7a=10/7a=1。

2024-07-03 17:59:19 113

原创 LinuxC 笔记归纳与习题解答

创建test1.c文件代码:vi test1.c或vi test1.c(当前路径没有test1.c文件需要保存,自动生成test1.c)文件相关操作:cat test1.c在终端查看文件的内容head test1.c在终端查看文件内容,默认查看前十行head -n test1.c 在终端查看文件内容de前n行tail test1.c在终端查看文件内容,默认查看后十行tail -n test1.c 在终端查看文件内容de后n行#include <stdio.h> 函数库。

2024-07-02 19:12:42 217

空空如也

空空如也

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

TA关注的人

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