C语言
文章平均质量分 67
Victoria2222222
这个作者很懒,什么都没留下…
展开
-
linux高级编程(9)进程间通信
练习5:cp操作,父进程与子进程,把父进程的内容cp到子进程里面。2的信号量集就是semaphore。练习3:broken操作(管道破裂)原创 2024-07-02 20:46:47 · 211 阅读 · 0 评论 -
linux高级编程(8)线程
linux下的线程同步===》信号量机制===》semaphore.h posix。信号量的定义===》信号量的初始化==》信号量的PV操作===》信号量的销毁。互斥机制===》互斥锁===》保证临界资源的访问控制。定义互斥锁==》初始化锁==》加锁==》解锁==》销毁。互斥===》在多线程中对临界资源的排他性访问。===》有一定先后顺序的对资源的排他性访问。信号量的类型 信号量的变量。1.无名信号量==》线程间通信。2.有名信号量==》进程间通信。线程的同步===》同步。原创 2024-07-01 17:54:22 · 258 阅读 · 0 评论 -
linux高级编程(7)线程
优点:比多进程节省资源,可以共享变量概念:线程是轻量级进程,一般是一个进程中的多个任务。进程是系统中最小的资源分配单位。(一般做比较大的任务)线程是系统中最小的执行单位。特征:1.共享资源(只要能传参就能共享)2.效率高30%3.三方库: pthread clone posix3.1 编写代码头文件 :pthread.h3.2编译代码加载库: -lpthread library缺点:1.线程和进程相比,稳定性,稍微差些2.现成的调试gdb,相对麻烦些。*123。原创 2024-06-28 17:55:56 · 670 阅读 · 0 评论 -
Linux高级编程(4)
文件描述符:操作系统内核对打开的文件的表示方式 //本质是一个整型的数值。O_RDWR //读写。O_RDONLY //只读。O_WRONLY //只写。@pathname 要打开的文件名 --- 字符串形式。@mode 表示文件的权限,只有创建文件时需要指定。单纯创建0_CREAT 就够用了,因为是或的关系。@flags 打开文件的模式。umask是掩码(制定权限用的)用法:umask 000(例子)fopen 库函数。原创 2024-06-24 18:03:11 · 676 阅读 · 0 评论 -
Linux高级编程(3)
存了多少个字节。原创 2024-06-21 17:20:53 · 783 阅读 · 0 评论 -
Linux环境编程(高级编程2)
s socket 套接字文件 用于进程间及网络通信。l 软连接文件 类似Windows快捷方式。p pipe管道 进程间通信。b 块设备文件 硬盘。音响 // 识别 字符设备文件。摄像头:字符设备识别文件。自定义的话:出错原因。perror(“自定义的话”);- 常规文件。stream---流//d 目录文件。原创 2024-06-20 18:04:10 · 537 阅读 · 0 评论 -
单片机定时器和串口
并行特点:电路要复杂一些,硬件资源使用要多一些,效率高,传输距离短,串行特点:电路简单,节省硬件资源,效率低。数据(信息)的传递和交换。半双工:某一时刻,只能有一端收,一端发。一次性多位数据给到 --- 并行通信。TL0--低八位寄存器(计数初值)TH0--高八位寄存器(计数初值)定时器//计数 --- 脉冲的数。一位一位给数据 --- 串行通信。TCON--计时器开关。TMOD--工作模式。51单片机内部的通信。51单片机外部的通信。原创 2024-06-14 18:01:42 · 203 阅读 · 0 评论 -
单片机基础3
(bit1)IE0 --- 外部中断的请求标志位 当 外部中断0发生中断时,这一位会被设置1。在执行一个任务的过程中,被另外一个任务打断,处理完这个中断后,返回来继续原先的任务。进行单偏激操作时,有些寄存器的操作,可以直接影响到引脚的变化。中断是cpu提供的一个功能部件//用的时候需要开启这项功能。IT1 = 1//下降沿触发。s3c 2440 //arm----不支持中断嵌套。(bit7)EX0 = 1//开 外部中断0。中断优先级 //多个中断同时来了。(bit7)EA = 1//开总中断。原创 2024-06-13 17:59:33 · 104 阅读 · 0 评论 -
枚举和typedef
写程序---控制寄存器中的某些二进制位--->关联到某些硬件引脚--->电平的变化。//typedef是不是定义了一个新的类型?//此时表示给int型起了一个别名叫a。4.枚举常量,可以给初值,给了初值之后,后面的值会依次影响到。typedef不能定义出一个新的类型,它是给已有类型起别名。//左移n位,相当于乘以2^n。//定义了一个int型变量a。0000 0010//2(左移一位)0000 0100//4(左移两位)操作数2 表示要移动的位数。a原创 2024-06-05 17:55:09 · 371 阅读 · 0 评论 -
链表和共用体
不足,插入数据 删除数据 不方便。[数据n1] [数据n2] [数据n3]struct Node *next;//保存地址--指向下一个节点。//空链表 --- 只有头节点,但是没有有效的数据节点。数据结构---指的是 数据的组织形式//链表 树 图。//数据域 -- 存储要处理的数据。数组:数据结构体 --- 操作时候的特点,无头--第一个节点数据域为随机值或者无效值。操作://数据结构体 数据的处理 增删改查。原创 2024-06-04 17:59:46 · 295 阅读 · 0 评论 -
结构体与共用体
/ 成员与成员之间的初始化的值,用逗号隔开。//s变量中,存储的是某一个学生地信息。//初始化,需要按照成员列表的顺序依次初始化。(不能再定义了,因为没有结构体名,因此这种方法只适用于使用一次的变量)3.成员列表//来描述结构体类型中具体的一些数据。2.结构体名//表明这个结构体类型的名称。姓名 |学号 |班级 |分数 | 表头---类型。int---整型数据 学生类型---结构体:提供一种可以让程序员自定义数据类型的方式。声明类型的同时,定义变量,但是结构体名,可以省略。原创 2024-06-03 17:56:39 · 440 阅读 · 0 评论 -
函数的指针
int (int a,int b)//这表示一类函数---返回值为int型,形参为两个int型的函数。直接使用变量名+()传实参,进行函数调用即可。函数指针变量使用时,可以不进行*p运算。指针数组 //char* s[10]//函数名---代表函数的入口地址。把函数名去掉,剩下的是函数的类型。数组指针 int(*p)[4]回调函数(callback)原创 2024-05-30 17:53:00 · 170 阅读 · 0 评论 -
指针进阶2
/如果,不希望修改*s1的数据。//*s1和s1本身都不能被修改。//s1的空间开在栈上,但是s1指向的"字符串常量"//基类型int[4]这种类型----数组类型。//存放"字符串常量区"//此时还是*s1不能被修改。//表示将*s1限定为只读。//常量区的数据不能修改。2.const修饰的变量,为只读变量//变量还是变量 只是成了只读的。//s数组名---数组首元素的地址&s[0]//s的空间开在栈上。&a[0]//int [4] *指针类型。const char *s//*s这种方式修改不了数据。原创 2024-05-29 17:57:26 · 648 阅读 · 0 评论 -
指针的相关
/a是一个float类型的变量,&a表示获得了这块空间的地址,这个值的类型是float*//表示的p中存放的 地址编号所代表的那块空间中要存放的数据的类型。//p指向的数据类型是int类型 //p指向的类型是基类型(目标类型)数组名 ---代表值---首元素的地址(只要知道首元素的地址了后面的地址就都能推出来来)//p的基类型是int(看的是这行开头的int的类型)//指针是一种数据类型 ,p是int型的指针(地址)类型。(1)基类型---表示地址编号所代表的那块空间中要存放的数据的类型。原创 2024-05-27 18:02:58 · 243 阅读 · 0 评论 -
预处理命令
预处理命令原创 2024-05-25 17:02:28 · 325 阅读 · 1 评论