
嵌入式Linux入门基础
文章平均质量分 90
介绍linux的操作入门:工具链的使用、进程、线程开发、之间的通讯
数贾电子科技
个人经历:有6年的海外跨国企业嵌入式产品研发经历和11年职业教育经历,曾指导学生参加大学生电子设计大赛、职业技能国赛和世界技能大赛等赛项获奖。与国内企业开发产品:智能充电柜、车载氛围灯、数据采集盒、智能压力传感器和车载数据检测仪等嵌入式产品。承接各种嵌入式产品的软件和硬件电路板设计和开发。
展开
-
Linux 基础入门操作 第十二章 TINY Web 服务器
CGI(Common Gateway Interface) 是 WWW 技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI 程序)与 WEB 服务器之间的接口标准,是在 CGI 程序和 Web 服务器之间传递信息的过程。CGI 规范允许 Web 服务器执行外部程序,并将它们的输出发送给 Web 浏览器,CGI 将 Web 的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。Common Gateway Interface,简称 CGI。原创 2025-03-23 11:01:33 · 1041 阅读 · 0 评论 -
Linux 基础入门操作 第十一章 图形界面设计
流行的文本编辑器,使用 curses 实现界面和交互。系统监控工具,使用 curses 实时显示系统状态。终端复用工具,使用 curses 管理多个终端窗口。经典的 Roguelike 游戏,使用 curses 实现图形界面和交互。例如 testcurs,展示了 curses 的各种功能。适用于终端应用程序、游戏、系统监控工具等场景,是开发高效、轻量级命令行工具的重要工具库。尽管功能受限,但在合适的场景下,curses 仍然是一个非常强大且实用的工具。原创 2025-03-23 09:44:51 · 455 阅读 · 0 评论 -
Linux 基础入门操作 第十章 多线程之线程同步 2
线程同步是多线程编程中的核心概念,用于协调多个线程对共享资源的访问,避免竞态条件和数据不一致。Linux提供了多种线程同步机制,各有其适用场景。同步方法:互斥锁(Mutual Exclusion Lock)是Linux线程同步中最基础、最常用的机制,用于保护共享资源,防止多个线程同时访问导致的数据竞争问题。排他性:同一时间只允许一个线程持有锁阻塞性:获取不到锁的线程会阻塞等待不递归:默认情况下,同一线程重复加锁会导致死锁2.2.2 加锁和解锁2.2.3 摧毁锁2.3 应用案例3 条件变量(C原创 2025-04-10 06:31:26 · 838 阅读 · 0 评论 -
linux 基础入门操作 第十章 C++多线程介绍 2
std::thread 是 C++11 标准引入的线程库,提供面向对象的多线程编程接口,比传统的 POSIX 线程(pthread)更易用且类型安全。原创 2025-04-12 19:28:47 · 400 阅读 · 0 评论 -
Linux 基础入门操作 第十章 多线程介绍 1
线程是进程的一条执行路径。每个线程共享其所附属的进程的所有的资源,包括打开的文件、页表(因此也就共享整个用户态地址空间)、信号标识及动态分配的内存等等。线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一物理内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程技术早在 60 年代就被提出,但真正应用多线程到操作系统中去,是在 80 年代中期。传统的 Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。原创 2024-09-25 15:51:39 · 1194 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程之间通讯消息队列
msg_ptr 是一个指向准备发送消息的指针,但是消息的数据结构却有一定的要求,指针 msg_ptr 所指向的消息结构一定要是以一个长整型成员变量开始的结构体,接收函数将用这个成员来确定消息的类型。msg_sz 是 msg_ptr 指向的消息的长度,注意是消息的长度,而不是整个结构体的长度,也就是说 msg_sz是不包括长整型消息类型成员变量的长度。调用成功时,该函数返回放到接收缓存区中的字节数,消息被复制到由 msg_ptr 指向的用户分配的缓存区中,然后删除消息队列中的对应消息。原创 2024-09-19 21:04:33 · 562 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程之间通讯共享内存
不相关的进程可以通过该函数的返回值访问同一共享内存,它代表程序可能要使用的某个资源,程序对所有共享内存的访问都是间接的,程序先通过调用 shmget 函数并提供一个键,再由系统生成一个相应的共享内存标识符(shmget 函数的返回值),只有 shmget 函数才直接使用信号量键,所有其他的信号量函数使用由semget 函数返回的信号量标识符。第一次创建完共享内存时,它还不能被任何进程访问,shmat 函数的作用就是用来启动对该共享内存的访问,并把共享内存连接到当前进程的地址空间。原创 2024-09-19 20:46:25 · 645 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程之间通讯信号量 2
信号量与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号量有以下两种类型:二值信号量:最简单的信号量形式,信号灯的值只能取 0 或 1,类似于互斥锁。计算信号量:信号量的值可以取任意非负值(当然受内核本身的约束)信号量只能进行两种操作等待和发送信号,即 P(sv)和 V(sv),他们的行为是这样的:P(sv):如果 sv 的值大于零,就给它减 1;如果原创 2025-04-03 19:04:37 · 769 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程之间通讯信号量 1
信号量与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号量有以下两种类型:二值信号量:最简单的信号量形式,信号灯的值只能取 0 或 1,类似于互斥锁。原创 2024-09-19 15:53:20 · 1846 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程间通信之有名管道
/ 创建 FIFO(如果不存在)// 如果已存在,继续使用(不报错)// 打开 FIFO(阻塞模式,等待读取端连接)// 写入数据} else {close(fd);return 0;原创 2025-03-31 16:22:33 · 846 阅读 · 0 评论 -
Linux 基础入门操作 第九章 进程间通信之匿名管道
进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几 M 字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程,应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。原创 2024-09-19 13:51:12 · 1197 阅读 · 0 评论 -
Linux 基础入门操作-实验八 信号处理
信号 signal 处理是 Linux 程序的一个特色,用信号处理来模拟操作系统的中断功能,对于系统程序员来说是最好的一个选择了。原创 2024-09-19 11:16:18 · 1051 阅读 · 0 评论 -
Linux 基础入门操作-实验七 进程的介绍
码段、堆栈段和数据段。代码段存放了程序的代码。代码段可以为机器中运行同一程序的数个进程共享。堆栈段存放的是子程序的返回地址、子程序的参数及程序的局部变量。而数据段则存放程序的全局变量、常数以及动态数据分配的数据空间,如用malloc函数申请的内存。与代码段不同,如果系统中同时运行多个相同的程序,它们不能使用同一堆栈段和数据段。1用户状态:用户状态下运行的状态;2内核状态:进程在内核状态下运行的状态;3内存中就绪:进程没有执行,但处于就绪状态,只要内核调度它,就可以执行;原创 2024-10-06 15:29:23 · 1096 阅读 · 0 评论 -
Linux 基础入门操作 - 第六章时间操作
c语言的头文件位置常见的api的函数。原创 2024-10-06 14:42:40 · 922 阅读 · 0 评论 -
Linux 基础入门操作 - 第5章 基础文件操作 下
目录流(DIR*) 是一个表示“打开的目录”的数据结构,就像文件流 FILE* 表示打开的文件一样。它是操作系统用来迭代目录中内容的内部结构。你可以把它想象成“一个可以一条一条读取目录中条目的句柄”。原创 2025-04-24 09:52:25 · 446 阅读 · 0 评论 -
Linux 基础入门操作 - 第5章 基础文件操作 上
off_set:参数用来指定位置,偏移量,表示从whence指定的位置开始移动的字节数。将字符串buf中前nbytes个字节的数据写入与文件描述符fd关联的文件中,返回实际写入的字节数。从文件描述符fd相关的文件中读取nbytes个字节的数据到buf中,返回实际读入的字节数。size_t:返回值,返回成功读取的字符数,它可能会小于请求的字节数。对文件描述符fd指定文件的读写指针进行设置,也就是说,它可以设置文件的下一个读写位置。返回一个小于0的值,则出现错误,可以从错误errno中获取错误的状态。原创 2024-10-02 18:05:05 · 1219 阅读 · 0 评论 -
Linux 基础入门操作 - 第四章 GDB调试器调试程序
插入断点,就可以利用run指令来运行程序。list: 查看代码。break : 插入代码。next: 下一个插入。run : 运行程序。原创 2024-10-02 17:18:41 · 364 阅读 · 0 评论 -
Linux 基础入门操作-实验三 cmake使用介绍
cmake 是 kitware 公司以及一些开源开发者在开发几个工具套件(VTK)的过程中衍生品,最终形成体系,成为一个独立的开放源代码项目。项目的诞生时间是 2001 年。其官方网站是 www.cmake.org,可以通过访问官方网站获得更多关于 cmake 的信息。原创 2025-03-06 11:36:21 · 1017 阅读 · 0 评论 -
Linux 基础入门操作-实验二 makefile使用介绍
Makefile 是 linux 下的项目管理工具,想象一下当有很多源文件需要编译、链接时,你只需执行 make命令即可完成编译操作,这样是不是很方便呢。make 命令执行时,需要一个 Makefile 文件,用来告诉 make命令需要怎么样的去编译和链接程序,下面详细介绍 Makefile 的使用与书写规则。原创 2024-09-16 14:44:21 · 841 阅读 · 0 评论 -
Linux 基础入门操作-实验一 GCC使用
源代码就是程序员写出来的一个个代码文件,包括头文件和源文件。机器码是 CPU 可以直接解读的数据,由 0、1 组成,跟平台相关,ARM 平台跟 x86 平台的机器码是不一样的。程序语言是为了方便程序员的开发而产生的,用机器码开发程序是不可能的,于是出现了汇编、c、c++、c#、java 等程序语言,它们都需要经过编译器的编译生成可执行程序(由机器码组成)。原创 2024-09-16 14:27:50 · 867 阅读 · 0 评论 -
Linux 基础入门操作 前言 VIM的基本操作 2
服务器/终端:Vim、Nano、Micro桌面环境:VS Code、Kate、Sublime Text极客/可定制:Emacs、Neovim、Helix。原创 2025-04-08 06:39:27 · 655 阅读 · 0 评论 -
Linux 基础入门操作 前言 linux操作指令介绍 1
name="Alice" # 定义变量echo $name # 使用变量echo ${name} # 推荐使用大括号readonly PI=3.14 # 只读变量unset name # 删除变量greet() {local name=$1 # 局部变量# 调用函数# 返回值add() {add 3 5echo $?# 8。原创 2025-04-03 19:03:36 · 1002 阅读 · 0 评论