linux
Cyj0622
热衷于学习嵌入式linux的小伙伴
展开
-
基于stm32mp157和qt的简易视频播放器
因为没有处理视频流会有视频丢失的情况。原创 2024-03-23 23:19:56 · 201 阅读 · 0 评论 -
内核模块编程之不同目录下的依赖和传参
EXPORT_SYMBOL的作用是将指定的符号(函数或变量)的名称和信息添加到内核的全局符号表中,以便其他模块可以访问和使用这些符号,从而实现模块之间的符号共享。但是这里值得注意的是这里在内核源码的目录下会对该模块目录的makefile进行第二次解释,这样就可以用内核源码的Makefile的变量来编译该目录下的模块代码。1.首先想要在和linux源码不同级的目录下编写动态加载方式的模块代码,需要在模块代码的同级目录下写上这个Makefile,这个Makefile会经过2次解释。原创 2023-12-10 15:31:24 · 407 阅读 · 1 评论 -
汇编指令之100以内的加法求和
在学习汇编的过程中,遇到了这个题目。在c语言的基础上,运用汇编指令处理100以内的整数求和。原创 2023-11-01 14:06:48 · 151 阅读 · 1 评论 -
Makefile命令的使用与make工具的解释
编译和链接过程分为两步可以提高编译速度、实现模块化编程和代码重用,同时也方便了代码的管理和维护。(在代码进行修改后,,再次编译就只会编译修改的那部分,然后再重新链接)make是一个用来解释Makefile命令的一个工具,他可以便捷的完成编译链接的功能,在实际的开发中可以提高效率。1.Makefile中需要分两步进行,先要将所有.C文件编译成.o文件,然后再将所有.o文件进行链接。这份Makefile文件可以实现将同一目录下的所有.C文件进行编译链接。3.对于删除所有.o文件,需要先建立一个伪目标。原创 2023-10-03 20:47:56 · 70 阅读 · 1 评论 -
关于open函数阻塞问题(普通文件与管道文件的对比)
open函数用于打开文件,并返回一个文件对象,以便进一步对文件进行读取、写入等操作。在打开文件时,open函数会立即返回文件对象,不会等待文件的完全加载或准备就绪。同样的如果写端关闭后,读端会收到写端的文件描述符关闭信号,read函数会立即返回0。比如以只读方式打开一个管道文件后,open函数会一直阻塞直到另外一个进程以只写方式打开这个管道文件。以只写方式打开一个管道文件后open函数会一直阻塞到另外一个进程以只写方式打开。但是对于管道文件而言,open函数通常会经常阻塞。原创 2023-10-03 18:26:07 · 576 阅读 · 2 评论 -
非亲缘关系的进程进行mmap内存映射
因此,当两个进程调用mmap函数进行共享内存的映射时,它们各自得到的返回值是它们自己的虚拟地址,在各自的虚拟地址空间中指向共享内存区域的位置。在Linux系统中,每个进程都有独立的虚拟地址空间,进程之间的虚拟地址是隔离的。需要注意的是,虽然两个进程的mmap地址值不同,但它们映射的是同一块物理内存,通过读写各自的虚拟地址,可以实现进程间的通信和数据交换。当两个非亲缘关系的进程通过mmap通信时,它们在各自的地址空间中使用的虚拟地址是不同的,因此返回的mmap地址值也会不同。原创 2023-10-02 21:35:15 · 92 阅读 · 1 评论 -
有名管道的实现
有名管道可以实现两个不同进程间的通信,通过写端创建管道文件,读端可以依次读取数据。管道文件时文件系统可见的。2.当读端退出后,写端再次写入读端时,系统会发出报错信号给写端,让写端程序异常终止。3.当写端退出后,读端会检测到写端文件描述符关闭,此时读端的read函数会立即但会0。1.open函数会进行阻塞,直到有一个进程进行读操作或则写操作。写端通过管道文件写入管道文件,读端进行读取。下面是读端和写端的代码实现。原创 2023-10-02 12:20:44 · 35 阅读 · 1 评论 -
无名管道的实验
2.要注意两个进程读的时机,最好是一个写线程休眠的时间稍微多余另外一个写线程的时间。(为了防止线程读的时候造成两组字符串都连续读到了)在我学习无名管道的过程中,进行了多个进程的创建。实现了两个进程写,一个进程读。接下来我会展示我的代码和要注意的事项。3.最为重要的是创建子进程的时候要注意不要让子进程创建子进程,否则会出现很多没有必要的进程。1.每次读之前都要记得将buf数组清零,否则会出现乱码。4.此处巧妙的地方在于利用i变量进行进程的分别。原创 2023-10-01 22:31:44 · 49 阅读 · 0 评论