【嵌入式学习笔记-01】什么是UC,操作系统历史介绍,计算机系统分层,环境变量(PATH),错误

【嵌入式学习笔记】什么是UC,操作系统历史介绍,计算机系统分层,环境变量(PATH),错误

文章目录

  • 什么是UC?
  • 计算机系统分层
    • 什么是操作系统?
  • 环境变量
    • 什么是环境变量?
    • 环境变量的添加?
    • 常见环境变量
    • 环境变量表
  • 错误处理

什么是UC?

U是指unix操作系统。Unix操作系统是使用C语言实现的系统级软件。
UC是指使用C语言在Unix操作系统上的用户编程。unix系统向用户提供了大量的接口。用户通过系统提供的接口,使用操作系统提供的服务

计算机系统分层

什么是操作系统?

  • 操作系统是管理计算机硬件资源和软件资源的一款系统软件。

  • 操作系统简称OS。

image-20240101190847480

  • 操作系统通过驱动程序管理着计算机的硬件资源

  • 通过系统调用和用户进行交互

  • 在很多书籍中,对操作系统层次的描述也有类似下图

    image-20240101191107754

环境变量

什么是环境变量?

  • bash用一个叫做环境变量的特性来存储有关工作环境的信息。
  • 进程可以通过环境变量访问计算机的资源。
  • 在终端下输入env命令,可以查看环境变量列表。
  • 通过echo $name 可以查看某个环境变量的值。

环境变量的添加?

  • 在终端窗口中输入 键=值 形式的内容,回车。
  • 比如 FOOD=guobaorou,表示在当前bash中,添加名为 FOOD,值为 guobaorou的环境变量。
  • 如果环境变量FOOD存在,则更改其值。
  • 强调,在添加环境变量时,登号左右两侧不要添加空格。

常见环境变量

  • PATH环境变量

PAHT=/home/tarena/Qt5.4.1/5.4/gcc_64/bin:/home/tarena/Qt5.4.1/Tools/QtCieator/bin:/home/tarena/bin:/home/tarena/.local/bin:/usr/local/sbin:/usr/localbin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

  • 该环境变量所记录的是bash进程对命令的检索路径

    格式为“.”分割的多个路径。当在bash下输入命令的时候,首先,在第一个路径下找该命令的可执行程序,找到就执行,不再向后找,如果找不到,在第二个路径下找找到就执行,不再向后找;如果找不到,继续下一个路径。如果到最后一个路径都找不到,就提示该命令不能找到的错误。

  • 如果想要执行自己的程序,而又不想添加“./”,该如何做呢?

    ./a.out --> a.out

  • 在PATH环境变量中,添加当前路径,再执行程序时,即可省略”./"。

    PATH=&PATH:

  • 如果没有特殊操作,对环境变量的设置仅对当前shell进程有效,开启新的终端,之前的操作不会被保留。

  • 在家目录下有名为.bashrc的脚本文件,每次bash进程启动前,件的内容。如果希望环境变量的设置对每个bash进程都有效,可以将环境变量的设置写在该脚本文件中。

  • 执行 source ~/.bashrc 命令,可以使文件立即对当前bash生效。

环境变量表

  • 每个进程都有一张独立的环境变量表,其中的每个条目都是一个形如”键=值”形式的环境变量。

    image-20240101192445546

  • 所谓环境变量表就是一个以NULL指针结束的字符指针数组,其中的每个元素都是一个字符指针,指向一个以空字符结尾的字符串,该字符串就是形如”键=值”形式的环境变量。该指针数组的地址保存在全局变量environ中

image-20240101192700425

  • 通过全局环境变量表指针environ可以访问所有环境变量

    extern char** environ;
    char** pp;
    for (pp = environ;*pp; ++pp){printf ("%s\n",*pp);
    }
    
  • 通过main函数的第三个参数也可以访问到进程的环境变量,main函数的第三个参数就是环境变量表的起始地址

    int main (int argc, char* argv[], char* envp[]) {char** pp;for(pp = envp;*pp; ++pp){printf("%s\n",*pp);}reutrn 0;
    }
    

错误处理

  • 针对因为运行环境、人为操作等原因会导致程序执行时发生错误,那么如何获取具体的错误原因呢?

  • 我们一般会采取下列几种方式

  • 通过错误号了解具体的错误原因

    • 系统于定义的整数类型全局变量errno中存储了最近一次系统调用的错误编号
    • 知道了错误编号,也就知道了错误原因
    • 头文件/usr/include/errno.h中包含了对errno全局变量的外部声明
    • 在头文件/usr/include/asm-generic/errno-bashe.h中包含各种错误号的宏定义
  • 通过strerror0函数了解错误原因

    • #include<string.h>

    • char* strerror(int errnum)

    • 功能: 将整数形式的错误号转换为有意义的字符串

    • 参数: errnum 错误号

    • 返回值: 返回与参数错误号对应的描述字符串

  • 通过perror()函数了解错误原因

    • #include <stdio.h>
    • void perror(char const* tag)
    • 功能: 在标准出错设备上打印最近一次函数调用的错误信息
    • 参数: tag 为用户自己制定的提示内容,输出时,会自动在该提示内容和错误信息之间添加冒号进行分隔

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

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

相关文章

简写英语单词

题目&#xff1a; 思路&#xff1a; 这段代码的主要思路是读取一个字符串&#xff0c;然后将其中每个单词的首字母大写输出。具体来说&#xff0c;程序首先使用 fgets 函数读取一个字符串&#xff0c;然后遍历该字符串中的每个字符。当程序遇到一个字母时&#xff0c;如果此时…

基于图论的图像分割 python + PyQt5

数据结构大作业&#xff0c;基于图论中的最小生成树的图像分割。一个很古老的算法&#xff0c;精度远远不如深度学习算法&#xff0c;但是对于代码能力是一个很好的锻炼。 课设要求&#xff1a; &#xff08; 1 &#xff09;输入&#xff1a;图像&#xff08;例如教室场景图&a…

47、激活函数 - sigmoid

今天在看一个比较常见的激活函数,叫作 sigmoid 激活函数,它的数学表达式为: 其中,x 为输入,画出图来看更直观一些。 Sigmoid 函数的图像看起来像一个 S 形曲线,我们先分析一下这个函数的特点。 Sigmoid 函数的输出范围在 (0, 1) 之间,并且不等于0或1。 Sigmoid 很明显是…

Codeforces Round 900 (Div. 3)(A-F)

比赛链接 : Dashboard - Codeforces Round 900 (Div. 3) - Codeforces A. How Much Does Daytona Cost? 题面 : 思路 : 在序列中只要找到k&#xff0c;就返回true ; 代码 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…

spring 之 事务

1、JdbcTemplate Spring 框架对 JDBC 进行封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 1.1 准备工作 ①搭建子模块 搭建子模块&#xff1a;spring-jdbc-tx ②加入依赖 <dependencies><!--spring jdbc Spring 持久化层支持jar包--><dependency&…

性能优化(CPU优化技术)-ARM Neon详细介绍

本文主要介绍ARM Neon技术&#xff0c;包括SIMD技术、SIMT、ARM Neon的指令、寄存器、意图为读者提供对ARM Neon的一个整体理解。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09…

2024年总结的前端学习路线分享(学习导读)

勤学如春起之苗&#xff0c;不见其增&#xff0c;日有所长 。辍学如磨刀之石&#xff0c;不见其损&#xff0c;日有所亏。 在写上一篇 2023年前端学习路线 的时候&#xff0c;时间还在2023年初停留&#xff0c;而如今不知不觉时间已经悄然来到了2024年&#xff0c;回顾往昔岁月…

三、Mysql安全性操作[用户创建、权限分配]

一、用户 1.创建用户 CREATE USER test1localhost identified BY test1;2.删除用户 DROP USER test2localhost;二、权限分配 1.查询用户权限 SHOW GRANTS FOR test1localhost;2.分配权限 # 分配用户所有权限在for_end_test库的test1表 GRANT ALL PRIVILEGES ON for_end_t…

Pycharm引用其他文件夹的py

Pycharm引用其他文件夹的py 方式1&#xff1a;包名设置为Sources ROOT 起包名的时候&#xff0c;需要在该文件夹上&#xff1a;右键 --> Mark Directory as --> Sources ROOT 标记目录为源码目录&#xff0c;就可以了。 再引用就可以了 import common from aoeweb impo…

OCP NVME SSD规范解读-3.NVMe管理命令-part2

NVMe-AD-8&#xff1a;在某些情况下&#xff08;如Sanitize命令、Format NVM命令或TCG Revert方法后数据被清除&#xff09;&#xff0c;设备应允许读取已清除的LBAs而不产生错误&#xff0c;并在最后一次清除完成后&#xff0c;对未写入LBAs的读取返回所有零值给主机 NVMe-AD…

鸿蒙开发之android对比开发《基础知识》

基于华为鸿蒙未来可能不再兼容android应用&#xff0c;推出鸿蒙开发系列文档&#xff0c;帮助android开发人员快速上手鸿蒙应用开发。 1. 鸿蒙使用什么基础语言开发&#xff1f; ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风…

二叉树题目:根到叶路径上的不足结点

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;根到叶路径上的不足结点 出处&#xff1a;1080. 根到叶路径上的不足结点 难度 6 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root…

关键字:throw关键字

在 Java 中&#xff0c;throw关键字用于抛出异常。当程序执行过程中发生意外情况&#xff0c;如错误的输入、资源不足、错误的逻辑等&#xff0c;导致程序无法正常执行下去时&#xff0c;可以使用throw关键字抛出异常。 以下是使用throw关键字的一些示例&#xff1a; 抛出异常…

服装店收银系统不只是收银 还需要线上商城和线上批发

一个综合性的服装店收银系统可以结合线上商城和线上批发功能&#xff0c;提供以下特点和优势&#xff1a; 线上商城&#xff1a;将服装店的商品信息同步到线上商城平台&#xff0c;让顾客可以通过网站或移动应用程序浏览和购买商品。线上商城可以实现在线支付、订单跟踪、售后服…

MySQL数据库索引优化

一、引言 1. 索引的重要性 MySQL数据库索引的重要性主要体现在&#xff0c;一是查询速度优化&#xff0c;索引可以极大地提高查询速度。对于没有索引的表&#xff0c;MySQL必须进行全部扫描来找到所需的行&#xff0c;如果表中数据量很大&#xff0c;那么通常很慢。通过适当的…

大数据规模存储的几个核心问题

文章目录 三个关键问题RAID&#xff08;独立磁盘冗余阵列&#xff09;RAID是如何解决关于存储的三个关键问题&#xff1f;水平伸缩 大规模数据存储都需要解决几个核心问题&#xff0c;这些问题都是什么呢&#xff1f; 三个关键问题 1.数据存储容量的问题 既然大数据要解决的…

图像分割实战-系列教程1:语义分割与实例分割概述

&#x1f341;&#x1f341;&#x1f341;图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 下篇内容&#xff1a; Unet系列算法 1、图像分割任务概述 1.1 图像分割 分割任务就是在原始图像…

Elasticsearch8集群部署

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 本文记录在3台服务器上离线搭建es8.7.1版本集群。 1. 修改系统配置 1.1 hosts配置 在三台es节点服务器加入hostname解析&…

加法器原理详解

加法器的介绍与原理分析 什么是加法器&#xff1f; 加法器是一种数字电路&#xff0c;用于将两个二进制数相加并输出它们的和。 如何实现加法器 要讨论如何实现加法器就要先从只有一位的数字先进行考虑 一位二进制数相加 不考虑来自低位的进位——半加器 对于一位二进制…

【VTK三维重建-体绘制】第四期 VTK中GPU加速

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ&#xff1a;870202403 前言 上期内容讲到VTK的体绘制技术vtkGPUVolumeRayCastMapper&#xff0c;本文分享VTK中GPU加速的相关内容&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会…