自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux----网络udp编程

addrlen //src_addr 大小---使用方式与accept中的addrlen使用方式一样。recv(,0) /send(,0) ///TCP 常用套机字读写。recvfrom()/sendto() ///UDP 常用套接字读写。read()/write () ///通用文件读写,可以操作套接字。addrlen //dest_addr的大小。dest_addr //要发送到的目的地址。@src_addr //源地址。recvfrom() //接收消息。

2025-04-01 15:41:46 305

原创 Linux----网络tcp编程

内核空间] [传输层tcp] [传输层tcp][物理层] -----------------> [物理层]PF_UNIX == AF_UNIX ==>单机程序。SOCK_STREAM 流式套接字 ===》TCP。参数:domain 地址族,PF_INET == AF_INET ==>互联网程序。SOCK_DGRAM 用户数据报套接字===>UDP。SOCK_RAW 原始套接字 ===》IP。一个进程读,一个进程写;

2025-03-17 17:37:59 877

原创 Linux----网络tcp基础

IPv4 地址 . . . . . . . . . . . . : 192.168.0.41。子网掩码 . . . . . . . . . . . . : 255.255.255.0。默认网关. . . . . . . . . . . . . : 192.168.0.1。osi 模型 --- 理想化模型 --- 并没有真正实现。| ---DNS解析---ip地址 183.2.172.17。主机号 用来标识 --- 在该网络中的哪一台计算机。子网掩码 ---- 用来区分 和 识别 网络号 和 主机号。

2025-03-10 20:50:29 828

原创 Linux-----进程间的通信

=>fd 是固定写端。==>fd 是固定读端。pipefd[1] ==>无名管道的固定写端//1 -- 标准输出。半双工 ---发送端 和 接收端 同一个时刻之后有一个起效 ---对讲机。参数:pipefd[0] ==>无名管道的固定读端//0 -- 标准输入。有名管道 ===》fifo ==》可以给任意单机进程通信(同一主机内)无名管道 ===》pipe ==》只能给有亲缘关系进程通信。(1).创建有名管道 -- 类似 文件 (管道文件)单工 ---发送端 接收端固定 --- 广播。

2025-03-04 19:08:00 1069

原创 Linux----进程间的通信

key --- IPC_PRIVATE //创建一个key对应ipc对象 ---- 主要用于亲缘关系进程间。失败 SIG_ERR (void (*sighandler_t)(int) 类型的 -1)中断(信号)处理程序 --- 负责对该中断(信号)做出反应的。sig 当前程序要发送的信号编号 《=== kill -l。编写一个自己的kill程序,尽量模拟kill命令的效果。//signo //参数 ---表示 接收到的信号的编号。3.信号量集 //--- 信号量集(集合)---很多个信号量。

2025-03-04 09:08:52 690

原创 Linux----线程

2.pthread_cleanup_pop(0) //pthread_exit() //退出动作会导致 触发。@start_routine ---线程执行函数//线程回调函数 --- 提现线程任务执行的部分。pthread_exit ----\-------->pthread_join 获得退出状态值。@attr --- 线程属性 //默认属性 NULL --可结合性。进程(重量级的进程): 更多侧重于 成为 资源分配的单位 ---- 资源分配的基本单位。

2025-03-03 11:27:54 825

原创 Linux-----进程总结

3)_exit,_Exit 会关闭所有的已经打开的文件,不执行清理函数。exec l p -- 要执行的文件到系统的环境变量PATH中去寻找。fork 之前 打开文件 --- 父子进程影响 同一个 offset。fork 之后 打开文件 --- 父子进程 各有自己的offset。2.根据问题的需要 ,分工 --- 父进程 ,子进程。a.复制父进程 --- 跟父进程做一样的事情。b.复制父进程 --- 启动新的程序。1.fork ---能创建多个进程。2)exit() //库函数。

2025-02-27 17:25:50 600

原创 Linux-----进程(fork+exec)

WNOHANG 以非阻塞的方式 回收子进程 ---1. 如果是非阻塞 ,在没有子进程状态改变时,此时返回0。bash bash (+exec 函数调用 --- 它会用新程序的镜像替换原有镜像,vector //向量 --- 后面的参数 以字符串指针数组的形式组织。@path //说明 --要执行的可执行文件的名字 (包含路径)等待所有子进程 ---当前进程的所有进程。list //列举 --- 后面的参数逐个列举出来。(主要用来 --- 回收子进程的资源----避免僵尸态)

2025-02-26 09:02:37 964

原创 Linux----进程(fork)

2.他们的数据相互独立,父进程或子进程对数据的修改,不会相互影响,只会对各自造成影响。1.创建好之后,父子进程的运行顺序是不确定 ---全部取决于 操作系统的调度。子进程和父进程 各自拥有自己的 用户空间(进程空间)子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。克隆的进程称为子进程,原有的进程称为 父进程。子进程 结束,父进程还在,且父进程并未"收尸"此时,父子进程各自拥有独立的4g内存空间 (32位的系统)结束子进程,父进程还在,但是父进程并没有对子进程"收尸"

2025-02-25 18:32:57 1235

原创 Linux---进程基础

全局区|data/bss data --- 已经初始化了的全局变量或静态变量 bss ---未初始化。ps -eLf | grep a.out //查看a.out 信息 //可以观察到 PID PPID。./a.out ----加载到内存----> 代码|data|bss|堆|栈。ps -eLf | head -1 //可以观察到 PID PPID。ps -aux | grep a.out //可以查看进程 的状态。程序 ---- 加载到内存 ----> 进程。

2025-02-24 18:42:45 350

原创 Linux编程----filelo(2)

文件IO --- 安全性 操作的是硬件 ---文件IO。标准IO --- 可移植性 如果操作只是文本数据。@statbuf //用来保存文件的属性信息。fdopen() //将fd 转换 成 FILE *fileno() //将FILE *转换 为 fd。@pathname //需要一个文件名字。//标准IO 操作中 ---系统调用的函数。@dirp --- 目录流指针。将fd 转换 成 FILE *st_mode 成员变量。将FILE *转换 为 fd。

2025-02-22 17:52:22 830

原创 Linuxi编程---filelo(1)

(系统调用) 2.读写 --read/write。c.设备文件 ---- 文件IO ///dev/video0 ----> fopen();offset >= 0 //可以 --- 创建 空洞 文件。全缓存/行缓存 文件指针(流指针)FILE * 1.打开 --fopen。O_CREAT //文件不存在 创建。SEEK_SET //相对于文件开头的。

2025-02-21 09:00:58 1221

原创 Linux编程---stdio(读写函数,缓存,偏移量)

/1.打开 fp_s fp_d //2.读写 先创建空洞文件 //重建一个和源文件 一样大小的空洞文件 do_cp();//fread 和 fwrite//3.关闭fclose。offset >= 0 //可以 --- 创建 空洞 文件。stderr //标准出错 --- 屏幕 --- 可以专门把错误信息输出到 stderr。SEEK_SET //相对于文件开头的。./a.out < main.c //< 表示输入重定向。./a.out > main.c //> 表示输出重定向。

2025-02-20 10:24:22 888

原创 Linux编程---stdio前言

成功 FILE*指针 //文件指针 流指针 --- 从程序上讲,FILE *指针就代表打开的这个文件。说明: 带r的 要求,文件必须存在 ,如果不存在,就会报错。标准IO库,不单单是linux上有,在windows,Mac os上都有。一般都是对普通文件操作是一种有缓存的IO 在文件IO和用户程序之间,令人惊讶的是,50年来,几乎没有对标准I/O库进行修改。c character 字符设备文件 eg: 鼠标,键盘。C一部分,任何支持标准C的系统都可使用标准IO实现文件存储。

2025-02-20 10:23:40 683

原创 Linux编程---shell编程基本语句

从终端接收一个成绩,0 - 59 不及格60 - 69 及格70 - 79 中等 80 - 89 良好90 - 100 优秀。``:将中间的字符串按照命令打印 (命令置换) //用命令结果 置换这条命令。"":打印字符串,遇到$变量($name)则打印变量中的值(name变量的值)/条件的生成 --test的命令 //注意: test 执行结果为真 0。//C中的 --- break。esac //esac --->case 反着写。//C中的 break。

2025-02-19 11:27:46 1014

原创 Linux编程--shell编程基础

4. ./XX.sh //执行文件。/bin/bash --- 表示当前这个shell脚本用哪个shell来解释执行。(3).名字规则 ,遵循C的命名规则。-----------[shell]------------ shell壳(保护)$$:当前shell的PID --- $$ 21694 //进程的概念提示。先编译再执行 //gcc 编译 (.c ---> 机器代码)进程 ---- 进行中程序(process id--进程的身份证号)

2025-02-18 11:03:17 757

原创 C语言---枚举和位运算

/s是struct stu 这个类型的别名。所谓"枚举"是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。将有关联的常量值,一一列举出来,组合成一个枚举类型。//定义了一个 struct stu的变量。枚举 --- 将变量的可能值(常量值) 一一列举出来。如果一个变量只有几种可能的值,则可以定义为枚举类型。1.枚举类型 本质是 用int型数据表示的。运算规则: 将 左操作数a 左移 n位。枚举类型 设计的不严谨的地方。运算规则: 一真则真。指的是二进制位上的运算。<< 左移 a<<n。

2025-02-17 09:00:53 274

原创 C语言----共用体

192.168.0.59 //ip地址 --- 网络环境中 ---实际对应是一个32位的数值。2.共用体初始化,只能写一个值,这个值是给第一个成员变量的值。使用方式 类似 结构体 --- 也是构造类型。1.共用体类型的大小 = 最大的成员的大小。3.共用体成员的访问方式 和 结构体一样。赋值时,后赋值的会影响前面赋值的结果。能不能让多个成员变量 公用同一块空间。//表示构造了一个共用体类型。早期的时候,计算机的硬件资源有限,union //联合--共用体。union 共用体名。//做函数返回值类型。

2025-02-15 07:56:17 594

原创 C语言---结构体(2)

1.free本身表示将空间释放,就是将空间交还给操作系统,操作系统之后,可以自由安排。pstr //必须是 之前 申请到的堆区内存空间的地址。free 并不会将释放的空间上的数据清零。@size ---说明,要申请的空间的大小。void * 返回申请到的空间的地址。4.释放掉之后的,空间,不要在使用了。3. 定义类型的同时定义变量 ,结构体名省略。堆区 --- 空间很大,但是需要手动申请,手动释放。从堆区申请一块内存空间。2. 定义类型的同时定义变量。

2025-02-14 09:17:46 460

原创 C语言-------结构体(1)

(此时表示 定义了一个 学生信息的结构体类型 数据类型 --- 用户自定义)//64位的平台 ---- 64位平台 整个结构体对齐, 按成员中最大的对齐。(3).成员列表 这个结构类型中要描述的具体数据 ,一般都是变量定义的形式。1.结构体成员的对齐 --- 放在自然边界 (偶数位置)2.结构体整体的对齐 --- 以结构体中最大的成员对齐。一.结构体类型 定义 --- 定义(从无到有) 声明()//如果没有超过4字节的,则按成员变量中最大对齐。此时 整个结构体 按照最大的那个成员对齐。

2025-02-13 08:55:41 1108

原创 C语言----结构体(3)

void printStu (struct stu s) //32字节。void printStuP(struct stu *s)//8字节。b.结构体本身的对齐 --- 以结构体中最大的成员来对齐。//定义类型的同时定义变量 --只用一次的时候。形式3 定义类型的同时定义变量,没有结构体名。a.结构体成员变量 的对齐 --- 自然边界。1.初始化 ---挨个成员变量初始化。2.赋值 ---挨个成员变量赋值。//定义类型的同时定义变量。形式2 定义类型的同时定义变量。结构体指针->结构体成员变量。

2025-02-12 11:29:39 392

原创 C语言--指针(三)

32位 0101 0101 0101 0101 0101 0101 0101 0101 //add。|--add.h //一部分是 对外的函数声明 一部分时自己的点c需要用到的头文件等内容。人类语言 --->编程语言(C语言)---汇编语言--->机器语言(01010)7. 宏替换过程中,存在宏的副作用 ---- 文本的原样替换。|--add.c //自己的点c通常会包含自己的点h。条件编译: //也是文本替换 --- 符合条件的文本。将文件名代表的文件中的内容 ,替换到当前文件。

2025-02-12 10:17:26 1327

原创 C语言---预处理

include "文件名" //首先在当前路径下寻找要包含的文件,找不到再到系统默认路径下寻找。|--add.h //一部分是 对外的函数声明 一部分时自己的点c需要用到的头文件等内容。人类语言 --->编程语言(C语言)---汇编语言--->机器语言(01010)宏名,一般都是大写 --- 主要是为了和普通变量名区分。7. 宏替换过程中,存在宏的副作用 ---- 文本的原样替换。|--add.c //自己的点c通常会包含自己的点h。条件编译: //也是文本替换 --- 符合条件的文本。

2025-02-11 20:08:54 936

原创 C语言-------指针(二)

src长度 < n 将字符串拷贝完成后,看n是否结束 ,如果没有,需要继续拷贝, 后面直接拷贝 '\0' ,始终 保证 拷贝 n 次。//准确说,是限定了通过 *p 的方式 访问到的基类型为只读。const char *p //const 此时是限定基类型的 --表示将基类型限定为只读。const char * p //const -- 限定为只读。char * const p //限定p为只读,表示不能修改p中值。char const * p //const 限定的是基类型。

2025-02-10 15:24:15 732

原创 C语言------指针(一)

(2) * ---- 表明此时定义的变量 为指针类型的变量。(1) 基类型 ---- 基类型表示 地址(指针) 指向的目标空间存储的数据的类型。*p //间接访问 -----先找到a的空间 ,再访问空间中的数据。规定了一种数据类型 -- 指针类型 ---专门用来处理 地址这种数据。p-q //结果 -- 表示差了几个基类型 (前提: 同类型的指针)p-- //结果 -- 表示 指针加了 N个 基类型的大小。数组名 -- 代表的值 ---首元素的地址。

2025-02-08 10:09:18 856

原创 C语言数组函数

形参 --- 字符型数组形式的形参 //不需要数组长度--- 因为字符型一维数组中主要存放的是 字符串数据。实参 --- 数组名 //因为字符串数据,本身有结束标志,此时不需要数组长度。实参 --- 数组名 , 行数。形参 --- 字符型二维数组形式的形参,行数的形参。形参 --- 二维数组形式的形参,行数的形参。实参 --- 二维数组数组名,行数。程序员 手动申请 手动释放。//字符串的结束标志。函数自己调用自己 --递归。

2025-02-07 14:00:23 493

原创 C语言中的函数(整型)

类型标识符 --- 写数据类型的 --- 表示的函数处理完之后,要带出的结果的类型。函数名 ---- 体现函数功能 --- 命名规则 符合标识符命名规则。类型名 变量名1,类型名 变量名2, 类型名 变量名3,形式参数 --- 用来接受 传递给函数中的数据的。类型标识符 函数名(形式参数) //函数头 head。//处理数据 -- 函数体 对应的代码。//函数体 -- body。输入 --- 处理 --- 输出。

2025-02-06 10:31:07 332

原创 C语言中----快速排序

step5:重复 step2~4,直到begin和end相遇。(假设的第一个元素)//位置--地址。对比基准值大的一部分继续快速排序。step7:对比基准值小的一部分继续快速排序。step2:从右往左找第一个比基准值小的数。step3:从左往右找第一个比基准值大的数。step4:交换step2,3 找到的值。step6:将相遇位置上的值和基准值交换。stepl:找到一个基准值。

2025-01-23 19:53:39 154

原创 C语言中字符型一维数组

/最终str2还需要有'\0'作为结束标志 --手动添加一个'\0'//从目标字符串 '\0'位置开始,将源字符串中的字符 挨个 赋值过来。src //表示存放 源字符串的空间的首地址。dest //表示存放 目的字符串的空间的首地址。src //表示存放 源字符串的空间的首地址。dest //表示存放 目的字符串的空间的首地址。//字符型的一维数组。s //表示存放字符串的空间的首地址。

2025-01-22 13:27:56 922

原创 C语言中的二维数组

表示定义了一个包含了5行 6列 int型数据的数组。一维数组(int[4])的 一维数组 [3](1).类型说明符 表示二维数组中数据元素的类型。例:定义一个3*4的二维数组,从键盘输入数据 ,找出能被3整除的数。类型说明符 数组名 [常量表达式][常量表达式];(3).[常量表达式][常量表达式]二维数组的行数可以省略,单数列数不能省略。实际上一个一维数组的一维数组 ,数组名[第一维下标][第二维下标]

2025-01-21 12:49:03 407

原创 C语言中的排序(一维数组)

在一个有序的序列中,找到要插入的位置,进入数据插入。相邻的两个元素,两两比较,小的放前,大的放后。将数据按照从大到小或者从小到大进行排列。从小到大---升序。给合适的位置选择合适的数。从大到小---降序。

2025-01-20 12:58:04 427

原创 C语言中的数组使用。(一维数组)

数组名[下标]//此时的[]不同于定义时[],表示的是数组下标运算,下标可以理解为元素的编号,从0开始的。去掉标识符剩下的就是标识符对应的数据类型inta[30]→int[30],它表示是这么一类数据能够存放30个int型变量。常量表达式整型的数值---数组中元素的个数---数组长度。(3)[常量表达式]---[]表示数组。

2025-01-18 16:29:41 487

原创 C语言中的流程控制(for循环 while循环 do-while循环)

假 表示do-while结束 ,程序继续往下。①执行循环体语句 ②判断表达式 真 继续执行循环体语句,语句执行完,继续判断表达式 ,重复这个过程,直到表达式为假。②判断 表达式2 真 ③执行语句④求解表达式3 重复②-④直到表达式2为假。判断 表达式 真 执行语句,继续表达式判断,如果为真继续执行语句 重复这个过程。循环四要素①.初始条件②结束条件③使循环趋于结束的语句(操作)④循环体。使循环趋于结束的语句)例1:从键盘输入一个数,判断这个数,是不是素数(质数)

2025-01-17 13:22:33 693

原创 C语言中的流程控制(if语句,switch语句)

截断特性,例如:a>1&&a1为假则不管后面的a1为假之后后面的a

2025-01-16 20:55:04 163

原创 C语言中的数据输入和输出

e 转换为 科学计数法形式 输出,指数部分 会显示 正负号 如果是一位数 则会补个0。C语言中的输入和输出并不是它本身的一部分,而是别人写好了的输入输出功能函数(stdio)。%X 转换为 十六进制形式 输出 输出结果中字符 都是大写形式。%.ng //保留结果中的 n位 数字。%g 以一种 更简洁的方式输出 ,不会将多余0输出。%Lf //输出 long double类型的数据。%f 转换为 小数形式输出,默认保留 6位 小数。%#o //将八进制的前缀 0 输出。

2025-01-15 20:15:30 862

原创 C语言中的运算符及表达式

在连着有多个运算符的时候,此时执行贪心原则:从左到右依次扫描字符,将字符尽可能地多的结合成C语言字符。1.运算规则 ,单独使用时,没区别但是参与到别的运算中时,此时运算规则发挥作用。加 + 减- 乘* 除/ 求余% 自加++ 自减-- 等等。短类型→长类型 无符号-高位补零 有符号-高位补符号位。(2)除法运算 的 被除数不能为 0。(3)求余运算的结果的符号取决于左操作数。(2)被(除)操作数 不能为 0。2.求余% (1)求余运算的运算数 必须是 整型。

2025-01-15 16:26:51 257

原创 C语言中的基本数据类型

1 | 111 1111 1111 1111 1111 1111 1000 0100 // 负的123 -- 反码 --- 符号位不变,其余位按位取反。1 | 111 1111 1111 1111 1111 1111 1000 0101 // 负的123 -- 补码 --- 符号位不变,反码 + 1。1 | 000 0000 0000 0000 0000 0000 0111 1011 // 负的123 -- 原码。最高位充当符号位 0//正数 1//负数 其余位充当数值位。

2025-01-14 21:52:46 417

空空如也

空空如也

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

TA关注的人

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