当前位置: 首页 > news >正文

苏州前程无忧官上做网站怎么做百度自己的网站

苏州前程无忧官上做网站,怎么做百度自己的网站,成都设计公司排行榜,wordpress文章如何调整字体大小引言 在当今的计算机技术领域#xff0c;Linux操作系统以其稳定性和灵活性而广受欢迎。它不仅是服务器和开发者的首选平台#xff0c;也是探索计算机科学和系统编程的宝库。在这个强大的操作系统中#xff0c;环境变量与本地变量扮演着至关重要的角色#xff0c;它们是管理…引言 在当今的计算机技术领域Linux操作系统以其稳定性和灵活性而广受欢迎。它不仅是服务器和开发者的首选平台也是探索计算机科学和系统编程的宝库。在这个强大的操作系统中环境变量与本地变量扮演着至关重要的角色它们是管理配置、传递数据和影响程序行为的关键机制。本文将引导我们深入探讨Linux中的这两种变量理解它们的定义、用途、区别以及如何在日常工作和脚本编程中有效地利用它们。通过掌握环境变量与本地变量的知识我们将能够更加高效地与Linux系统交互优化我们的工作流程并解锁系统管理的更多可能性。 并行与并发 在学习环境变量之前我们需要有一些提前储备的知识本文将通过并行与并发的介绍导入这些知识 并行多个进程在多个CPU下同时运行称之为并行。 并发多个进程在一个CPU下采用进程切换的方式在一个时间段内让多个进程得以推进称之为并发。 并发是何如切换进程的呢 在task_struct结构中存在时间片的概念通过时间片与基于时间片的轮转调度算法实现进程的切换。 寄存器 会什么函数的返回值会在函数外部拿到呢 我们都知道函数的返回值是一个在函数栈内的数据当栈帧销毁返回值便被销毁。因此需要一个不被销毁的中介去完成返回。这个中介就是寄存器。cpu内部存在大量的寄存器。 系统如何得知我们执行到那一行代码了呢 cpu内部存在一个称为eip的寄存器。 寄存器主要分为三种种类 通用寄存器eax ebx ecx edx 栈帧相关的寄存器esp ebp eip 状态相关的寄存器status 寄存器扮演的主要功能就是提高效率进程高频数据放入寄存器中。cpu内的寄存器存储的是进程相关的数据如eip。 进程的上下文 cpu寄存器是内存级别的存储保存的是进程的临时数据称作进程的上下文。 进程的上下文Process Context是操作系统中的一个概念它指的是在操作系统中一个进程在执行时所需的所有信息。 这些信息包括进程的状态、程序计数器、寄存器、堆栈、内存分配、打开的文件描述符、环境变量、信号处理程序等。进程上下文是操作系统管理进程执行和切换的关键部分。 以下是进程上下文的主要组成部分和特点 上下文切换的性能直接影响到系统的响应速度和吞吐量。 进程的切换执行时间片到了---保存上下文---去另一个队列排队--恢复上下文---重新执行该进程 用户空间上下文 程序计数器指示下一条要执行的指令。寄存器包括通用寄存器、状态寄存器、指令寄存器等它们保存了进程执行时的临时数据。堆栈包含了局部变量、函数调用的返回地址、参数等信息。用户空间的内存包括进程的代码段、数据段、堆和栈。 内核空间上下文 进程控制块PCB也称为任务结构包含了进程的ID、状态、优先级、父进程ID、子进程列表、资源使用情况等。文件描述符表记录了进程打开的所有文件描述符及其对应的文件表项。虚拟内存表包括页表、段表等用于虚拟内存到物理内存的映射。信号处理程序定义了进程如何响应接收到的信号。 上下文切换 当操作系统进行进程调度时它会执行上下文切换即保存当前运行进程的上下文并加载下一个将要运行进程的上下文。上下文切换包括保存当前进程的状态和恢复另一个进程的状态这是一个相对昂贵的操作因为它涉及到CPU寄存器的保存和恢复以及内存管理单元MMU的更新。 上下文的状态 运行态进程正在CPU上执行。就绪态进程已准备好执行但由于CPU被其他进程占用而等待。阻塞态进程因等待某些事件如I/O操作完成而暂时停止执行。 环境变量 环境变量这部分我们将通过两部分进行介绍1.见见猪跑简单认识一下 2.尝尝猪肉了解具体信息 见见猪跑 1.环境变量PATH 为什么ls等系统指令可以直接执行但是我们的可执行程序需要指明执行的目录呢 我们都知道ls这种指令是/usr/bin下的可执行程序那bash为什么知道默认去这个目录找指令呢 这其实与PATH这个环境变量有关PATH这个环境变量记录了指令目录信息。 发现PATH环境变是用冒号作为分隔符定义出来的很多路径。 因此只有当你的程序在这些路径下bash才能找到这个程序否则就需要指定目录。 当执行ls时会在这些被冒号分割的路径下一个一个的去查找。 将自己的指令添加到环境变量 不可以有空格            不可以直接写./这种是覆盖写入     不要用相对路径./路径改变将失效     这样t1在PATH中存在之后就可以直接执行t1了。which用来PATH中指令的路径。 当然这种修改是内存级的本地变量的配置也是内存级别的当重新进入shell中PATH将恢复初始水平。 PATH等环境变量是shell启动时配置的。 2.环境变量HOME 登陆时用你的用户名去配置$HOME这就是你的家目录 3.SHELL bash命令行就是当前的shell环境。 4.env指令environment查看环境变量 env展现的这一大坨就是shell中所有的环境变量。涵盖了一些基础的信息。 已知shell可以记忆历史指令 history指令可以记忆最近的1000条指令这个1000就是由HISTSIZE控制的。 终端信息这是默认的终端设备文件 ls的配色方案 USER记录用户  PWD会记录当前的路径 OLDPWD对应cd -  尝尝猪肉 通过上述的介绍可以了解到环境变量其实是一个KV模型键值对应着特殊的val getenv函数 除了通过env可以得到对应的环境变量getenv这个函数也可以得到环境变量。 头文件在stdlib.h中 由于环境变量是一个KV模型所以给定K值可以得到对应的V。 传入环境变量的名称字符串可以得到对应的val字符串 需要注意的是字符和指针字符串在这个地方被理解为首字符的地址不能直接比较string重载的operator只能用来比较整个string对象string本身封装过的一个字符串存储的是char而不是字符串 因此代码应该修改为strcmp c_str可以得到Cstring的C接口对象。 现在我们就可以对环境变量完成KV类型的调用。 命令行参数与main函数参数  其实main函数是可以带参数的 1.双参数 参数有两个时参数是一个整型和一个指针数组argcc就是countargv内部有多少元素由argc决定。 linux需要经常用这两个东西这些东西是用来接收命令行指令中的信息的。 可以看到命令行指令可以携带参数 我们输入的 ./t1 -a -b -c 其实会以空格为分隔符被解析为一个个字符串 “./t1” “ -a ” “-b ”    “-c” 这叫做指令的解析。 有几个字符串就初始化argc为几。 如ls  -l   ls -a 这种指针数组被称为向量表 当然main函数还可以继续喂参数 env这个指针数组存储的就是环境变量。 env[]类似于argv[]argv[i]当执行结束时下一个元素被设置为NULL。 打印下看看内部是什么东西 发现打印的环境中的环境变量 。因此我们可以通过env[]直接获得环境变量。 环境变量的全局属性 通过新增环境变量去继承 在命令行直接定义的变量成为本地变量 转变为环境变量export导出 发现环境变量被继承。  取消环境变量unset unset直接跟上环境变量即可不需要$ unset 命令可以用来取消环境变量和本地变量。 本地变量  不通过export导入的变量就是本地变量内存级别 打印本地变量同样需要$符号否则会被认为是字符串。 查询set set可以用来查询本地变量环境变量。本地变量不会被子进程继承。bash的环境变量只会在bash内部 内建指令 明明本地变量不能被继承为什么echo作为bash的子进程可以打印本地变量 其实需要指明一个点并不是所有指令都是bash的子进程。这种指令称作内建指令。 内建指令是bash本身的一个功能不需要通过子进程实现。 cd就是一个典型的内建指令 当你在shell中输入cd /some/directory时shell不会去文件系统中查找名为cd的可执行文件而是直接执行内建的cd逻辑将当前工作目录更改为指定的路径。 cd的执行不会导致shell进程的创建或终止因为它是shell自身的一部分。 由于cd是内建的它可以直接访问和修改shell的内部变量如PWD当前工作目录的路径。 cd可以直接访问shell的本地变量如果变量包含一个有效的路径只要正确地引用变量值即可。 例如 MYDIR/home/user/documents 要使用cd命令改变到这个变量指定的目录你可以这样做 cd $MYDIR 在这里双引号是用来确保变量$MYDIR的值被正确地作为单个字符串传递给cd命令。如果路径中包含空格或者特殊字符使用双引号是特别重要的因为它可以防止这些字符被错误地解释为多个参数或者命令。 如果不使用双引号并且路径中包含空格那么cd命令可能会无法正确解析路径从而导致错误。例如 MYDIR/home/user/my documents cd $MYDIR  # 这可能会导致错误因为路径被分解为多个参数#是shell的注释符号 在上面的例子中cd会尝试改变到名为/home/user/my的目录然后尝试执行名为documents的命令这显然不是我们想要的结果。 /* 题外话 Xshell会提供一种shell环境所有的shell环境都是将#作为注释符号 shell的规范是统一的吗 Shell的规范并不是完全统一的因为存在多种不同的shell每种shell都有自己的特点和规范。虽然许多shell在基本语法和功能上有所共通但它们在特定功能、扩展、内置命令以及脚本编程能力等方面存在差异。 以下是一些常见的shell及其特点 Bash (Bourne Again SHell): 最广泛使用的shell之一是许多Linux发行版的默认shell。 它遵循POSIX标准但也包含了许多扩展。 Bash脚本通常以 #!/bin/bash 开头。 SH (Bourne SHell): 最初的Unix shell由Steve Bourne编写。 它是许多其他shell的基础。 SH脚本通常以 #!/bin/sh 开头。 CSH (C SHell): 受C语言影响较深语法类似于C。 它不是Bourne shell家族的一部分因此其脚本语法与Bash和SH不同。 CSH脚本通常以 #!/bin/csh 开头。 TCSH: 是CSH的一个扩展版本提供了一些额外的功能和改进。 TCSH脚本通常以 #!/bin/tcsh 开头。 ZSH (Z SHell): 提供了强大的命令行编辑、拼写纠正、文件名补全等功能。 它具有高度的可配置性。 ZSH脚本通常以 #!/bin/zsh 开头。 尽管不同shell之间存在差异POSIX标准定义了shell应该遵循的一组基本规范以确保在符合POSIX的系统中基本的shell脚本可以在不同的shell上运行。POSIX标准旨在提供跨平台的兼容性因此大多数shell都遵循POSIX的基本规则包括使用 # 作为注释符号、基本的控制结构如if、for、while等。 然而超出POSIX标准的特性如Bash中的某些数组操作或高级参数扩展可能在其他shell中不可用或不兼容。因此编写跨shell兼容的脚本时通常需要限制使用POSIX标准中定义的功能。 */ cd的模拟 如果是这是一个bash的话那么cd并不会创建子进程fork而是直接更改地址 # 指令被拆解的字符串的地址会存放在argv这个指针数组中 chdir接口 chdir可以将程序进程的地址更改到指定的地址 cd模拟实现  如果argv[0]解析到字符串为cd时将不创建子进程直接将进程的地址修改为cd后面带着的地址argv[1] argv[i]就是我们输入的指令解析的字符串 环境变量的其他获取方式C语言提供的第三方变量 environ是一个二级指针指向环境变量表这是C语言提供的第三方变量。 可以实现不给main函数传参就能使用环境变量。 数组名是数组首元素一级指针的地址二级指针所以二级指针解引用就可以得到一级指针即一个字符串的首字符地址 有字符串首字符的地址就可以打印一个字符串 题外话 extern的作用 在C语言中extern关键字主要有以下作用 1. **跨文件变量和函数引用**extern关键字用于在一个文件中引用另一个文件中定义的变量或函数。这允许在不同文件之间共享全局变量和函数。例如如果在文件A中定义了一个变量或函数在文件B中可以通过声明extern来引用这个变量或函数。 2. **变量和函数声明**使用extern关键字可以声明一个变量或函数表明其定义在其他地方。这通常用于在函数外部声明变量使得它们可以在不同的文件中被访问。需要注意的是extern声明并不分配内存它只是告诉编译器该变量或函数在其他地方定义。 3. **避免重复定义**在多文件编程中如果不希望在其他文件中引用某个文件中的变量可以在该变量前加上static关键字。而使用extern则意味着变量可以被其他文件引用从而避免了重复定义的问题。 以下是一些具体的用法示例 - **引用同一文件中的变量**如果想在函数中使用在后面定义的变量可以在函数前使用extern来声明这个变量。   - **引用不同文件中的变量或函数**在文件A中定义变量或函数在文件B中使用extern来声明这些变量或函数然后就可以在文件B中引用它们。 - **全局和局部变量**全局变量外部变量默认具有extern属性意味着它们可以被其他文件中的函数访问。局部变量则只在定义它们的函数内部有效。 总之extern关键字在C语言中主要用于声明在不同文件中定义的全局变量和函数使得这些变量和函数可以在多个文件中被共享和访问。
http://www.hkea.cn/news/14379133/

相关文章:

  • 台州模板网建站河南软件开发app制作公司
  • 网站域名需icp备案吗百度一下你就知道搜索引擎
  • 快印店网站建设84wzjswordpress文章群发工具
  • 个人网站需要什么内容临沂网站排名优化
  • sns社区网站开发php制作投票网站
  • 如何制作响应式网站网站优化人员
  • 资讯类网站开发文档外链建设工具
  • 网站建设报价单-中英文版南京网页网站制作
  • 建站之星网站建设系统电脑显示无法运行wordpress
  • 山西推广型网站建设互联网行业分为哪几类
  • 怎样找回网站备案密码错误青岛专业网站建设推广报价
  • 三网合一 网站建设北京网站建设是什么意思
  • 如何进入官方网站福州免费企业网站建站
  • 网站姐姐做床戏网站毕业设计网站
  • 网站后台shopadmin输在哪里网页报价表
  • 重庆网站建设cq600网页制作的模板代码
  • 重庆网站开发工资昆明c2c网站建设
  • 长沙做网站设计的公司团购鲜花的网站建设
  • 网站流量地址评价是什么意思wix做的网站在国内访问不了
  • 国外调色教程网站免费建网站空间
  • 网站制作收费手机网站欣赏
  • 梧州网站推广做网站公司是干什么的
  • 网站打开显示域名错误吉林省科瑞建设项目管理有限公司网站
  • 学会网站建设青岛免费模板建站
  • 企业网站是什么wordpress主题打开慢
  • 什么网站做旅行计划个人引擎网站什么做
  • 网站建设与维护好学吗投票网站怎么做
  • 代做网站的公司wordpress音乐自动播放
  • 网站建设活动计划网站页脚的信息都有什么
  • 网站做app安全吗好看的学校网站模板