【嵌入式学习笔记-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.hqwc.cn/news/314616.html

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

相关文章

http——https实现指南

第一部分&#xff1a;HTTPS安全证书简介 什么是HTTPS安全证书&#xff1f; 在网络通信中&#xff0c;HTTPS安全证书是一种由可信任的证书颁发机构&#xff08;CA&#xff09;签发的数字证书&#xff0c;用于保障网站与用户之间的数据传输安全。通过加密和身份验证&#xff0c…

Spring Boot Admin健康检查引起的Spring Boot服务假死

问题现象 最近在spring boot项目中引入了 spring-boot-starter-actuator 后&#xff0c;测试环境开始出现服务假死的现象&#xff0c; 且这个问题十分怪异&#xff0c;只在多个微服务中的简称A的这个服务中出现&#xff0c;其他服务都没有出现这个问题&#xff0c; 之所以说…

计算机网络——基础知识汇总(八)

前言&#xff1a; 前面我们已经将计算机网络的基础知识和基础框架有了一个简单的学习与了解&#xff0c;也对它可能考的一些计算机网络计算大题有了一个详细的解答与记录&#xff0c;现在我们将计算机网络中的一些基础知识点进行一个总结与记录&#xff0c;这些基础知识大多会出…

三、C语言中的分支与循环—循环嵌套 (9)

嵌套循环指的是一个循环内部包含另一个循环。外层循环每执行一次&#xff0c;内层循环会执行完其所有的迭代。嵌套循环经常被用来处理多维数据结构&#xff0c;如多维数组&#xff0c;或者在进行复杂的算法操作时&#xff0c;如排序和搜索算法。 嵌套循环可以是任意类型的循环…

Vue:Vue与VueComponent的关系图

1.一个重要的内置关系&#xff1a;VueComponent.prototype.proto Vue.prototype 2.为什么要有这个关系&#xff1a;让组件实例对象&#xff08;vc&#xff09;可以访问到 Vue原型上的属性、方法。 案例证明&#xff1a; <!DOCTYPE html> <html lang"en"&…

FL Studio怎么破解?FL Studio安装破解使用图文教程

fl studio是一款功能强大的编曲软件&#xff0c;怎么破解呢&#xff1f;今天小编就为大家带来了详细的安装破解教程&#xff0c;需要的朋友一起看看吧 fl studio20.8是一款功能强大的编曲软件&#xff0c;也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音&#xff0c;…

【话题】ChatGPT等大语言模型为什么没有智能2

我们接着上一次的讨论&#xff0c;继续探索大模型的存在的问题。正巧CSDN最近在搞文章活动&#xff0c;我们来看看大模型“幻觉”。当然&#xff0c;本文可能有很多我自己的“幻觉”&#xff0c;欢迎批评指正。如果这么说的话&#xff0c;其实很容易得出一个小结论——大模型如…

PyTorch中常用的工具(4)Visdom

文章目录 前言3.2 Visdom 前言 在训练神经网络的过程中需要用到很多的工具&#xff0c;最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块&#xff0c;合理使用这些工具可以极大地提高编程效率。 由于内容较多&#xff0c;本文分成了五篇文…

QGIS004:【01矢量创建工具箱】-创建网格、从表格创建点图层、导入带有地理标签的照片、点转线

摘要:QGIS矢量创建工具箱包括创建网格、从表格创建点图层、导入带有地理标签的照片、点转线等选项,本文介绍各选项的基本操作。 实验数据: 链接:https://pan.baidu.com/s/1PcF2ZfE5GM6fFg6rs3GeHA?pwd=rha4 提取码:rha4 一、创建网格 1.网格类型(点) 2.网格类型(线)…

Python算法例32 统计数字

1. 问题描述 计算数字k在0~n中出现的次数&#xff0c;k可能是0~9中的一个数字。 2. 问题示例 n12&#xff0c;k1&#xff0c;在[0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;7&#xff0c;8&#xff0c;9&#xff0c;10&a…

【大数据面试知识点】Spark的DAGScheduler

Spark数据本地化是在哪个阶段计算首选位置的&#xff1f; 先看一下DAGScheduler的注释&#xff0c;可以看到DAGScheduler除了Stage和Task的划分外&#xff0c;还做了缓存的跟踪和首选运行位置的计算。 DAGScheduler注释&#xff1a; The high-level scheduling layer that i…

问界M9激光雷达解说

什么是激光雷达 激光雷达(英文:Lidar),是一种通过发射激光束来测量目标位置、速度等特征量的雷达系统。其工作原理是将激光光束照射到目标物体上,然后通过测量激光光束从发射到反射回来的时间,来计算目标物体的距离、位置、速度等参数。激光雷达通常用于测量地形、地貌、…