![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux学习
文章平均质量分 79
码农小白
这个作者很懒,什么都没留下…
展开
-
linux学习:进程
【代码】linux学习:进程。原创 2024-06-03 20:00:03 · 628 阅读 · 0 评论 -
linux学习:进程通信 信号
include <signal.h> // 包含信号处理相关的头文件#include <stdio.h> // 包含标准输入输出函数库// 自定义的信号处理函数// 打印接收到的信号编号case SIGINT: // 如果是中断信号break;case SIGKILL: // 如果是终止信号(注意,SIGKILL通常不能被捕捉或忽略)break;case SIGUSR1: // 如果是用户定义信号1break;// 信号处理完毕后打印int main()原创 2024-06-03 01:56:34 · 177 阅读 · 0 评论 -
linux学习:进程通信 消息队列 共享内存
include <sys/ipc.h> // 包含IPC标准头文件,用于键值的生成等#include <sys/shm.h> // 包含System V共享内存功能相关的头文件#include <stdlib.h> // 包含标准库函数,如exit#include <stdio.h> // 包含标准输入输出函数#include <string.h> // 包含字符串处理函数int main()int shmid;// 共享内存标识符// 指向共享内存的指针key_t key;原创 2024-06-03 01:56:16 · 169 阅读 · 0 评论 -
linux学习:进程通信 管道
【代码】linux学习:进程通信 管道。原创 2024-06-03 01:55:59 · 399 阅读 · 0 评论 -
linux学习:文件系统
【代码】linux学习:文件系统。原创 2024-06-03 01:13:57 · 716 阅读 · 0 评论 -
linux学习:多媒体开发库SDL+视频、音频、事件子系统+处理yuv视频源
sdl是一个跨平台的底层开发库,提供操作诸如音频、 键盘、鼠标、游戏杆以及显卡等硬件的方法,被很多多媒体播放器、模拟器和流行游戏所使 用,SDL 支持 Windows、MacOS、Linux、iOS 以及 Android,也就是说你目所能及的 几乎所有平台它都能运行,并且 SDL 是开源的,完全由 C 语言编写,原创 2024-05-13 20:11:31 · 1162 阅读 · 0 评论 -
linux学习:视频输入+V4L2
V4L2 是 Linux 处理视频的最新标准代码模块,这其中包括对视频输入设备的处理,比 如高频头(即电视机信号输入端子)或者摄像头,还包括对视频输出设备的处理。一般而言, 最常见的是使用 V4L2 来处理摄像头数据采集的问题我们平常所使用的摄像头,实际上就是一个图像传感器,将光线捕捉到之后经过视频芯 片的处理,编码成 JPG/MJPG 或者 YUV 格式输出。而通过 V4L2 我们可以很方便地跟摄像 头等视频设备“沟通”,比如设置或者获取它们的工作参数。原创 2024-05-13 00:29:32 · 1036 阅读 · 0 评论 -
linux学习:linux视频输出+FRAME BUFFER+jpeg库+lcd上显示
framebuffer 是一种很底层的机制,在 Linux 系统中,为了能够屏蔽 各种不同的显示设备的具体细节,Linux 内核提供的一个覆盖于显示芯片之上的虚拟层,将 显卡或者显存设备抽象掉,提供给一个统一干净又抽象的编程接口,使得内核可以很方便地 将显卡硬件抽象成一块可直接操作的内存,而且还提供了封装好的各种操作和设置,大大提 高内核开发的效率。这个大小决定了映射内存的宽度。这个结构体保存显示设备不能被修改的信息,比如显存(或起到显存作用的内存)的起 始物理地址、扫描线尺寸、显卡加速器类别等。原创 2024-05-12 20:50:06 · 856 阅读 · 0 评论 -
linux学习:音视频编程+alsa声音架构
0,0 中的第一个 0 是系统中声卡的编号,第二个 0 是设备的 编号,而最后一个 0 代表标准打开模式,除此之外还可以是 SND_PCM_NONBLOCK 或者 SND_PCM_ASYNC,前者代表非阻塞读写 PCM 设备,后者代表声卡系统以异步方式工作: 每当一个周期(period)结束时,将触发一个。如果使用 8 个 bit (即一个字节)来描述采样值,那么能表达的值的范围是 256,如果使用 16 个 bit 来描述, 范围就被扩展为 65536,描述一个采样值所使用的位数,也被称为分辨率。原创 2024-05-07 18:37:46 · 741 阅读 · 0 评论 -
linux学习:线程池
一个进程中的线程就好比是一家公司里的员工,员工的数目应该根据公司的业务多少来 定,太少了忙不过来,但是太多了也浪费资源,最理想的情况是:让进程有一些初始数目的 线程(所谓的线程池),当没有任务的时候这些线程自动进入睡眠,有了任务他们会立即执 行任务,不断循环。进程还应该可以根据自身任务的繁重与否来增删线程的数目,当所有的 任务都完成了之后,所有的线程还能妥当地收官走人,不带走一片云彩。原创 2024-05-06 19:55:18 · 392 阅读 · 2 评论 -
linux学习:线程安全(信号量+互斥锁读写锁+条件变量+可重入函数)
这样的信号量其实是一个特殊的文件,创建成功之后将会被放置在系统的一个特殊的 虚拟文件系统/dev/shm 之中,不同的进程间只要约定好一个相同的名字,他们就可以通 过这种有名信号量来相互协调,在进程退出之后 他们并不会自动消失,而需要手工删除并释放资源。信号量分为两种,分别是无名信号量和有名信号量, 这两种信号量比之前介绍的 system-V 的信号量机制要简洁,虽然没有后者的应用范围那么广泛,但是 POSIX 良好的设计使得他们更具吸引力。使用条件变量,来实现前面所述的小楠和她的兄弟姐妹取钱的逻辑。原创 2024-04-29 21:53:11 · 968 阅读 · 0 评论 -
linux学习:线程
以上 API 都是针对线程属性操作的,所谓线程属性是类型为 pthread_attr_t 的 变量,设置一个线程的属性时,通过以上相关的函数接口,将需要的属性添加到该类型 变量里面,再通过 pthread_create( )的第二个参数来创建相应属性的线程。而在线程接受取消请求的情况下,如何停下来又取决于两种不同的响应取消请求的策略 ——延时响应和立即响应,当采取延时策略时,线程并不会立即退出,而是要遇到所谓的“取 消点”之后,才退出。而“取消点”,指的是一系列指定的函数。原创 2024-04-25 17:12:19 · 747 阅读 · 0 评论 -
linux学习:进程通信(信号量)
信号量跟前面的 MSG 和 SHM 有极大的不同,SEM 不是用来传输数据的, 而是作为“旗语”,用来协调各进程或者线程工作的。原创 2024-04-18 18:12:41 · 680 阅读 · 0 评论 -
linux学习:进程通信(system-V IPC+消息队列+共享内存)
消息队列、共享内存和信号量被统称为 system-V IPC,V 是罗马数字 5,是 Unix 的 AT&T 分支的其中一个版本,一般习惯称呼他们为 IPC 对象,这些对象的操作接口都比较 类似,在系统中他们都使用一种叫做 key 的键值来唯一标识,而且他们都是“持续性”资 源——即他们被创建之后,不会因为进程的退出而消失,而会持续地存在,除非调用特殊的函数或者命令删除他们。跟文件类型,进程每次“打开”一个 IPC 对象,就会获得一个表征这个对象的 ID,进 而再使用这个 ID 来操作这个对象。原创 2024-04-16 14:00:01 · 959 阅读 · 0 评论 -
linux学习:进程通信(管道+信号)
输出结果中,省略的部分是严格从大到小的实时信号,可见如果一个进程如果同 时收到多个实时信号时,他们的响应次序是按照信号值由大到小排队的。说明非实时信号是不可靠的,在传递的过程中有可能被丢弃。前面 31 个信号都有一个特殊的名字,对应 一个特殊的事件,比如 1 号信号 SIGHUP(Signal Hang UP),表示每当系统中的一个 控制终端被关闭(即挂断,hang up)时,即会产生这个信号,有时会将他们称为非实时 信号,这些信号都是从 Unix 系统继承下来的,他们还有个名称叫“不可靠信号”原创 2024-04-16 10:22:07 · 1005 阅读 · 0 评论 -
linux学习:进程(新建+运行某文件+退出处理函数+等待)
进程是由进程控制块、程序段、数据段三部分组成进程有都有一个父进程,除了init,父进程可以创建子进程每个进程都有一个PID,可以用ps来查看,等于进程的身份证pid是本身进程的pid,ppid是父进程的pid。原创 2024-04-15 16:54:15 · 999 阅读 · 0 评论 -
linux学习:输入设备+tslib库控制触控屏应用接口
连接操作系统的输入设备,可不止一种,也许是一个标准 PS/2 键盘,也许是一个 USB 鼠标,或者是一块触摸屏,甚至是一个游戏机摇杆,Linux 在处理这些纷繁各异的输入设备的时候,采用的办法还是找中间层来屏蔽各种细节在 Linux 的内核中,对输入设备的使用,实际上运用了 3 大块来管理,他们分别是所 谓的输入设备驱动层、输入子系统核心层,以及事件触发层。原创 2024-04-15 13:53:23 · 843 阅读 · 0 评论 -
linux学习:目录检索
Linux 中目录就是一组由文件名和索引号组成的索引表,目录下的文件的真正内容存储 在分区中的数据域区域。目录中索引表的每一项被称为“目录项”,里面至少存放了一个文 件的名字(不含路径部分)和索引号(分区唯一),当我们访问某一个文件的时候,就是根 据其所在的目录的索引表中的名字,找到其索引号,然后在分区的 i-node 节点域中查找到 对应的文件 i 节点的。操作目录跟标准 IO 函数操 作文件类似,也是先获得“目录指针”,然后读取一个个的“目录项”获取目录指针,并打印该目录下所有文件的名字。原创 2024-04-15 10:36:32 · 277 阅读 · 0 评论 -
linux学习:文件属性
在操作文件的时候,经常需要获取文件的属性,比如类型、权限、大小、所有者等等, 这些信息对于比如文件的传输、管理等是必不可少的,而这些信息这三个函数的功能完全一样,区别是:stat( )参数是一个文件的名字,而 fstat( )的参数是一个已经被打开了的文件的描述符 fd,而lstat( )则可以获取链接文件本身的属性。原创 2024-04-15 01:09:11 · 710 阅读 · 0 评论 -
linux学习:标准IO
系统 IO 的最大特点一个是更具通用性,不管是普通文件、管道文件、设备节点文件、 套接字文件等等都可以使用,另一个是他的简约性,对文件内数据的读写在任何情况下都是 不带任何格式的,而且数据的读写也都没有经过任何缓冲处理,这样做的理由是尽量精简内 核 API,而更加丰富的功能应该交给第三方库去进一步完善。原创 2024-04-12 23:54:41 · 983 阅读 · 0 评论 -
linux学习:文件类型、文件操作、系统IO、内存映射
在几百个 Linux 系统调用中,有一组函数是专门针对文件操作的,比如打开文件、关 闭文件、读写文件等,这些系统调用接口就被称为“系统 IO”,相应地,在几千个标准 C 库函数中,有一组函数也是专门针对文件操作的,被称为“标准 IO”,他们是工作在不同 层次,但都是为应用程序服务的函数接口。该函数在进程的虚拟内存空间 中映射出一块内存区域,用以对应指定的一个文件,该内存区域上的数据跟对应的文件的数 据是一一对应的,并在一开始的时候用文件的内容来初始化这片内存。文件信息的最左边一栏是各种文件类型的缩写。原创 2024-04-12 14:39:42 · 1018 阅读 · 0 评论 -
linux学习:队列
我们对队列里的元素操作是有严格限制的:插入一个新节点,必须插入到 指定的一端,而删除一个已有节点,则必须在另一端进行。当我们对一个线性表严格地执行 这样的限制的话,这种线性表就是一种特殊的线性表,称之为队列。为了方便描述,将队列 的插入称为入队,删除称为出队。可以插入节点的那一端称之为队尾,另一端则称之为队头队列这种逻辑结构同样可以使用顺序存储或者使用链式存储,使用顺序存储时,由于出 队入队分别在两端进行,为了避免数据的成片移动造成效率损失,可以考虑使用两个分别指 示队头和队尾的偏移量,来辅助队列操作。原创 2024-04-12 00:57:44 · 585 阅读 · 0 评论 -
linux学习:栈(汉诺塔游戏)
第一根上面套着 64 个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地 把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能 搬一个,而且大的不能放在小的上面。每次只能拿最上面的一个,然后放的时候也必须放到最上面,这 个逻辑其实就是栈。原创 2024-04-11 23:30:57 · 225 阅读 · 0 评论 -
linux学习:栈
struct node // 栈节点结构体int data;struct linked_stack // 栈管理结构体int size;原创 2024-04-11 22:46:21 · 273 阅读 · 0 评论 -
linux学习:结构体、联合体、枚举
每一款不同的处理器,存取内存数据都会有不同的策略,如果是 32 位的 CPU,一般 来讲他在存取内存数据的时候,每次至少存取 4 个字节(即 32 位),也就是按 4 字节对齐 来存取的。可见,如果对一个 double 型数据的地址不作要求,那么 CPU 就有可能为此付出代价: 需要三个指令周期才能将区区 8 个字节搬到家里来,这显然很不环保,环保的做法是:令 其地址至少是 4 的整数倍(即 4字节对齐)short为2,double为4,char为1,取最大的4为m,所以该x的大小为12。原创 2024-04-11 16:25:22 · 432 阅读 · 0 评论 -
linux学习:内存(栈,堆,数据段,代码段)
数据段实际上分为三部分,地址从高到底分别是.bss 段、.data 段和.rodata 段,三个 数据段各司其职:.bss 专门用来存放未初始化的静态数据,它们都将被初始化为 0,.data 段专门存放已经初始化的静态数据,这么初始值从程序文件中拷贝而来,而.rodata 段用来 存放只读数据,即常量,比如进程中所有的字符串、字符常量、整型浮点型常量等。跟栈一样,会随着进程的运行而不断地增大或缩小。堆内存被称为内存中的自由区,这是一个非常重要的区域,因为在此区域定义的内存的 生命周期我们是可以控制的,原创 2024-04-11 16:01:42 · 885 阅读 · 0 评论 -
linux学习:c的位运算符与优先级
位运算符优先级原创 2024-04-10 00:14:31 · 152 阅读 · 0 评论 -
linux学习:Makefile学习
A = apple继续上方编译多个.ca.o:a.cb.o:b.cx.o:x.cy.o:y.cCFLAGS、CC、MAKE、Shell 等等,这些变量已经有了系统预定义好的值,当然我们 可以根据需要重新给他们赋值,例如 CC 的默认值是 gcc,当我们需要使用 c 编译器的时候 可以直接使用他a.o:a.cb.o:b.cx.o:x.cy.o:y.c如果是要编译arm,只需修改CC递归定义方式B = China。原创 2024-04-09 00:44:04 · 978 阅读 · 0 评论 -
linux学习:gcc编译
用gcc 这个工具编译 hello.c,并且使之生成一个二进制文件 hello。其中 –o 的意义是 output,指明要生成的文件的名称,如果不写 –o hello 的话会生成默 认的一个 a.out 文件。原创 2024-04-08 01:37:44 · 431 阅读 · 0 评论 -
linux学习:shell脚本
目录要求注意变量变量的定义和赋值变量的引用变量的种类设置环境变量特殊符号引号竖杠(管道)和大于小于号(重定向)字符串处理测试语句脚本语法判断循环函数trap要把 Shell 命令放到一个“脚本”当中,有一个前提:脚本的第一行必须写成类似这样 的格式: #!/bin/bash这是给系统指定一款 Shell 解释器脚本文件缺省是没有执行权限的,要使得脚本可以执行必须给他添加权限赋值号的两边没有空格!在 Shell 脚本中,任何时候要给变量赋值,赋值号两 边一定不能有空格变量名也有类似于 C 语言那样的规定:只能原创 2024-04-08 01:22:49 · 962 阅读 · 0 评论 -
linux学习:sed脚本
流编辑器, 自然要涉及文件,实际上,sed 的工作就是把文件或字符串里面的文字经过一系列编辑命令 转换为另一种格式输出,文档就像河流的源头,sed 就像卡在河流中间的过滤器,所有的文 本经过 sed 过滤之后形成另一个样子。sed 就是这样的一种东西。原创 2024-04-07 20:18:33 · 298 阅读 · 0 评论 -
linux学习:awk和RE
其中,$0~/Brown/是一个条件,表示所指定 的域(这里是$0)要匹配的规则(这里是 Brown),也就是说,grade.txt 中的一行只要 包含有单词 Brown,就会被选出来然后打印出来。从 file 中每次读取一行,然后针对这一行判断条件 1,成立则执行动作 1, 否则不执行,然后判断条件 2,成立则执行动作 2,否则不执行,以此类推。awk是一种用于处理文本的编程语言工具,他扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤。原创 2024-04-07 19:31:43 · 1044 阅读 · 0 评论 -
树莓派学习:socket获取客户端IP地址
【代码】树莓派学习:socket获取客户端IP地址。原创 2023-12-05 18:29:46 · 796 阅读 · 0 评论 -
树莓派学习:命令记录总结
持续更新。原创 2023-11-28 19:14:13 · 988 阅读 · 0 评论 -
树莓派学习:建立socket进行网络通信+tcp+udp+端口+字节序+socketAPI+地址转换API+聊天对话框实战
头文件一种可用于根据指定的地址族、数据类型和协议来分配一个套接口的描述字及其所用的资源的函数返回值:非负描述符 – 成功,-1--出错ssize_t sendto(int sockfd,const void *buf, size_t len,int flags,const struct sockaddr *dst_addr, socklen_t addrlen) 主要用于udp。原创 2023-11-27 19:28:03 · 4067 阅读 · 1 评论 -
树莓派学习:静态库+动态库
是在程序执行前就加入到目标文件去了优点:运行快,发布的时候不需要给库缺点:内存大。原创 2023-11-27 01:48:45 · 465 阅读 · 1 评论