Linux学习方法-框架学习法——Linux应用程序编程框架

配套视频学习链接:https://www.bilibili.com/video/BV1HE411w7by?p=4&vd_source=d488bc722b90657aaa06a1e8647eddfc

目录

Linux应用程序编程

Linux应用程序编程

Linux文件I/O(input/output)

Linux文件I/O(五种I/O模型)

Linux多进程

Linux多线程

网络通信(socket编程)

Linux应用编程框架


Linux应用程序编程

  • 应用编程即Linux系统编程
  • 基于Linux内核之上,基于'系统调用’或者库函数的编程。
  • Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用
  • 系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态
  • '系统调用’在ARM系统中一般用'软中断’的方式来实现。
  • ARM处理器工作模式:

用户模式(USR):正常程序执行模式,不能直接切换到其他模式

系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权

快中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式

中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式

管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发)

中止模式(ABT):用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处

未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式

Linux应用程序编程

  • 包含丰富的内容(可参照'系统调用'清单)

文件I/O

多进程

多线程

网络SOCKET编程

时间函数、文件系统操作

用户管理、内存管理等

Linux文件I/O(input/output)

  • 一切皆文件(串口/LED等)
  • 文件I/O(inputoutput)实际就是对文件的读写操作

open()

read()

write()

ioctl()

close()

文件描述符(句柄)

fd=open(“目录文件”)

  • 标准I/O(带缓冲的IO)

可移植性更好 

Linux文件I/O(五种I/O模型)

阻塞

非阻塞

信号

多路复用

异步

Linux多进程

  • 多进程是多任务在Linux上的具体实现,多任务是操作系统的基本功能。
  • 进程的三种状态:就绪、阻塞、运行。

  • fork()分岔

  • 进程间通信

管道(匿名管道和命名管道)

信号

信号量

消息队列

共享内存

套接字

Linux多线程

  • 单个进程内可以运行多个线程,线程是操作系统时间片调度的最小单位
  • 每个线程可使用进程的全局变量
  • 线程生成函数:pthread create()
  • 线程同步(共用资源,合理分配资源的方式)

互斥锁

条件变量

读写锁

信号量

网络通信(socket编程)

网络通信是重点

很多操作系统的网络编程方式是一样的,都采用了socket方式

Linux应用编程框架

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合、List、Set、Map、Collections、queue、deque

概述 相同类型的数据进行统一管理操作,使用数据结构、链表结构,二叉树 分类:Collection、Map、Iterator 集合框架 List接口 有序的Collection接口,可以对列表中的每一个元u尿素的插入位置进行精确的控制,用户可以根…

k8s之nodelocaldns与CoreDNS组件

在 Kubernetes 集群中,通常是先通过 NodeLocal DNS Cache 进行域名解析,如果 NodeLocal DNS Cache 没有找到对应的域名解析结果,才会向 CoreDNS 发起请求。在部署层面上看nodelocaldns会在每个节点上运行一个 DNS 缓存服务,而Core…

Qt事件过滤器

1. 事件过滤器 void QObject::installEventFilter(QObject *filterObj) bool eventFilter(QObject *obj, QEvent *event); filterObj表示事件筛选器对象,它接收发送到此QObject对象(安装事件过滤器的部件对象)的所有事件。筛选器可以停止事件…

SpringCloud-Gateway解决跨域问题

Spring Cloud Gateway是一个基于Spring Framework的微服务网关,用于构建可扩展的分布式系统。在处理跨域问题时,可以通过配置网关来实现跨域资源共享(CORS)。要解决跨域问题,首先需要在网关的配置文件中添加相关的跨域…

Qt应用软件【协议篇】websocket的介绍和代码示例

WebSocket简介 WebSocket是一种网络通信协议,它使得浏览器(客户端)和服务器之间的通信变得更加高效和实时。这种技术特别适用于需要快速、双向交换数据的应用,比如实时聊天应用、在线游戏、实时股票交易平台等。WebSocket协议在2011年被标准化(RFC 6455),它旨在通过一个…

Spring Boot 常用注解大全

以下是Spring Boot中常用的注解及其详细解释以及相应的代码示例: SpringBootApplication: 这个注解用于标识一个Spring Boot应用的主类。它整合了 Configuration,EnableAutoConfiguration 和 ComponentScan。 SpringBootApplication public class Demo…

(六)激光线扫描-三维重建

本篇文章是《激光线扫描-三维重建》系列的最后一篇。 1. 基础理论 1.1 光平面 在之前光平面标定的文章中,已经提到过了,是指 激光发射器投射出一条线,形成的一个扇形区域平面就是光平面。 三维空间中平面的公式是: A X + B Y + C Z + D = 0 A X+B Y+C Z+D=0

矿产达人小程序修复前端

应用介绍 本文来自:矿产达人小程序修复前端 - 源码1688 矿产达人小程序: 矿产小游戏小程序是一款以矿产资源为主题的休闲娱乐游戏。以下是该小程序的主要功能特点: 游戏画面精美:小程序采用卡通化的设计风格,画面色…

程序媛的mac修炼手册-- 小白入门Java篇

最近因为要用CiteSpace做文献综述,间接接触Java了。所以,继Python、C之后,又要涉猎Java了。刺激!! 由于CiteSpace与Java要求版本高度匹配,有个匹配详情明天为大家讲解。总之,我的Java之旅开始于…

我们有在线社区啦!快来加入一起玩儿~

🙌大噶好呀!春节假期转瞬即逝,小陈已经正式开工啦~虽然不知道大家啥时候收假,但是 RTE 开发者社区㊗️诸位: 🧧🐲🙇2024 开工大吉🙇🐲&#x1f9…

企业级SAS盘SSDPM1643a PM1653 Nytro 2050 KPM71VUG3T20固态硬盘

今天给大家介绍一下KIOXIA铠侠PM7系列均衡性硬盘KPM71VUG3T20 存储容量:3200 GB 接口类型:SAS-4 读取速度:4,200 MB/s 写入速度:3,650 MB/s 工作温度:0 ℃ to 75 ℃ 储存温度:40 ℃ to 85 ℃ MTTF&a…

投放效果难衡量?如何精准提升ROI

在当前的移动互联网环境下,App获客和转化成为了许多应用面临的一大难题。随着广告买量成本的不断攀升,用户增长遭遇了瓶颈。同时,由于移动环境广告标识难以完整获取,投放效果的衡量也变得更加困难。那么,如何打破这一困…

跨环境前端组件库打包方案(node+esm)

背景 最近项目中需要把一个功能做成通用方案,抽离一个公共组件库。方案由两部分组成,包括一个用在页面上的组件库(lib.ts),以及一个用在打包期间的vite插件(plugin.ts)。 - src- lib.ts- plug…

高录用快见刊【最快会后两个月左右见刊】第三届社会科学与人文艺术国际学术会议 (SSHA 2024)

第三届社会科学与人文艺术国际学术会议 (SSHA 2024) 2024 3rd International Conference on Social Sciences and Humanities and Arts *文章投稿均可免费参会 *高录用快见刊【最快会后两个月左右见刊】 重要信息 会议官网:icssha.com 大会时间:202…

Squid代理:APT、PyPI和Docker的内网穿透解决方案

如果你是在内网环境,并且你知道一台服务器可以链接外网,可以通过Squid代理的方式更新apt、pypi、docker源。 你可以通过在服务器A(172.16.16.122,可上外网)上设置代理服务器来实现服务器B通过服务器A访问外部APT源的需…

快速添加防火墙firewalld脚本

这个脚本会接收一个参数,即你想要开放的端口号,然后使用firewalld命令来配置防火墙规则。请确保你的系统中已安装并启用了firewalld服务。 #!/bin/bash# 检查是否提供了端口号作为参数 if [ "$#" -ne 1 ]; thenecho "使用方法: $0 端口号…

OJ1104. 【软件认证】电话号码转换

OJ1104. 【软件认证】电话号码转换 题目描述 某语音翻译软件,需要实现如下中英文电话号码转换功能: 若输入的是英文数字单词或Double组成的电话号码,则输出对应的中文数字单词; 若输入为中文数字单词组成的电话号码&#xff0c…

Shell变量类型和运算符

一、Shell变量类型 1、变量类型 Shell的3种变量: (1)局部变量:除了本地变量外,还有shell脚本中定义的变量。 (2)全局变量:和局部变量相对。比如环境变量就是一种全局变量。 &am…

算法训练营day33(补),复习二叉树1

// 889. 根据前序和后序遍历构造二叉树 // 前序中左右 后序遍历左右中 func constructFromPrePost(preorder []int, postorder []int) *TreeNode { if len(preorder) 0 { return nil } root : &TreeNode{} root.Val preorder[0] //前序数组去掉root节点 preorder pre…

餐饮神秘顾客公司:关于餐饮行业神秘顾客调查注意事项

在餐饮业,顾客体验往往决定品牌的成败。为深入了解顾客需求和感受,许多餐饮企业引入“神秘顾客”调查。然而,此调查并非简单走过场,其中细节和注意事项颇多。餐饮行业神秘顾客调查需注意以下几点: 1. 专业培训&#x…