当前位置: 首页 > news >正文 网站代码加密了怎么做页面设计的重要性 news 2025/10/20 21:44:41 网站代码加密了怎么做,页面设计的重要性,网站建设推广软文案例,技能培训班【Linux笔记】Linux环境变量与地址空间 一、命令行参数1.1、main函数的参数1.2、main函数的第三个参数 二、环境变量的概念与内容2.1、环境变量的概念2.2、环境变量的分类2.3、环境变量的组织形式2.4、常见的环境变量 三、设置环境变量3.1、通过命令获取或设置环境变量3.2、通过… 【Linux笔记】Linux环境变量与地址空间 一、命令行参数1.1、main函数的参数1.2、main函数的第三个参数 二、环境变量的概念与内容2.1、环境变量的概念2.2、环境变量的分类2.3、环境变量的组织形式2.4、常见的环境变量 三、设置环境变量3.1、通过命令获取或设置环境变量3.2、通过代码获取获取环境变量3.3、通过系统调用获取或修改环境变量 四、进程地址空间的概念4.1、C/C程序员认为的空间排布4.2、虚拟地址与物理地址4.3、地址空间与物理内存之间转换4.4、理解为什么要有地址空间 一、命令行参数 1.1、main函数的参数 我们以前在写C/C程序的main函数的时候应该都是不带参数的 int main() {printf(hello world!!\n);return 0; }这可能会让人形成一种误解为main函数式不能带参数的。 但事实上main函数是可以带参数的如果是学过java的朋友可能很清楚这一点 int main(int argc, char *argv[]) {return 0; }从参数的形式可以看出一个是int类型的变量一个是一个指针数组可这是用来干嘛的啊 其实这个argv里存的每一个字符指针都指向一个命令行参数而argc这是这些参数的个数我们可以在程序中打印出这些参数 如上图其实我们在运行我们自己所写的程序时候也可以传入一些参数而系统会将我们呢传递的这些参数以空格为分隔将它们转化成字符串放入argv数组中然后我们就可以在程序中打印出这些字符串了而第一个字符串是程序的名字这是怎样都会存在的。 注意 打印这些字符串需要c99才支持所以我们需要再makefile文件中指定编译标准为c99。 但这又有什么用呢难道只是为了打印这么简单吗 其实我们类比我们平时在shell里面敲的各种指令就很好理解了。 例如ls指令我们不单单可以只执行ls也可以加入各种选项让它以不同的方式运行比如ls -l表示显示出文件的详细信息ls -a表示显示出所有文件包括隐藏文件。 而我们平时写的各种C/C程序运行起来后都是一个进程shell中的各种指令运行起来也都是进程所以我们也可以通过命令行参数的形式来是我们自己写的程序以不同的方式运行。 我们也可以将其类比成函数传参传入不同的参数函数就会计算出不同的结果只不过这些参数是程序外传进来的 1.2、main函数的第三个参数 其实main函数还有第三个参数env这第三个参数就与我们今天要讲的环境变量有关了它的本质也是一个字符指针数组其中每个指针执行的都是一个环境变量我们也可以先将它打印出来看看鲜 二、环境变量的概念与内容 2.1、环境变量的概念 大家可能都或多或少的听说过 “环境变量” 这个词当我们在安装一些软件或是语言例如java、python时都有要求过配置环境变量。 其本质目的就是为了操作系统能直接找到对应的软件或者指令也可以理解成是在操作系统环境中的一个变量所以操作系统能直接的找到它。 这时候我们再看看对于环境变量比较学术的概念就会好理解一会点了 环境变量environment variables一般是指在操作系统中用来指定操作系统运行环境的一些参数如临时文件夹位置和系统文件夹位置等。 环境变量是在操作系统中一个具有特定名字的对象它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量当要求系统运行一个程序而没有告诉它程序所在的完整路径时系统除了在当前目录下面寻找此程序外还应到path中指定的路径去找。用户通过设置环境变量来更好的运行进程。 2.2、环境变量的分类 环境变量可以按作用范围和生存周期分为两类 按作用范围分类 环境变量 相当于全局变量存在于所有的Shell中且具有继承性。 本地变量 相当于局部变量只存在于当前的Shell中本地变量包含环境变量但非环境变量不具有继承性。 按生存周期分类 永久性环境变量 需要修改配置文件变量永久保存。 暂时性环境变量 使用export定义关闭Shell后失效。 2.3、环境变量的组织形式 我们所创建的所有进程其实都对应有一张环境变量表这一张表其实就是一个字符指针数组(也可以理解成是一个字符串数组)其结构大致如下 环境变量表中的每一个指针都指向一个字符串字符串的内容其实就是一些描述信息最后以NULL结尾。 2.4、常见的环境变量 我们可以使用一下指令来查看一些常见的环境变量 echo $环境变量名 1、PATH PATH变量指定我们输入的各种指令的搜索路径 2、HOME 该变量指定用户的主工作目录即用户登录到Linux系统时默认的目录 以为上面用的是普通用户所以还会多带个home如果使用的是root用户就不会带home了 其中的原因也很容易理解因为root是超级管理员他当然能访问的范围就是最广的啦而普通用户的权限较小所以要放在/home工作目录中进行管理。 3、HISTSIZE 该变量查看Linux系统保存历史命令的数目 其显示结果说明当前Linux系统中最多保存1000条历史命令。 4、LOGNAME 该变量指定显示当前的用户名 5、HOSTNAME 该变量显示当前主机名称 6、SHELL 该变量显示用户当前使用的解析器 三、设置环境变量 3.1、通过命令获取或设置环境变量 我们可以通过一些命令来获取或设置环境变量。 1、echo 该命令能显示某一个环境变量的值。 这个命令我们上面已经演示过了 2、env 该命令可以显示所有的环境变量 3、set set命令显示本地定义的shell变量和环境变量 4、export export命令可以创建一个新的环境变量 使用export创建的环境变量值是一个暂时性的环境变量如果关闭shell再重启就会失效。 5、unset unset 命令功能是清除指定的环境变量 6、readonly 该命令用于设置只读的环境变量 只读的环境变量就是只能读取而不能修改消除的办法只有重启shell。 3.2、通过代码获取获取环境变量 我们可以通过main函数的第三个参数——环境变量地址指针数组 来获取环境变量 其打印的结果几乎和我们在命令行使用env打印出来的一样 我们也可以通过第三方变量environ获取环境变量 变量environ是系统定义的一个全局的二级指针它也是指向一个字符指针数组也可以理解为指向一个环境变量表。 3.3、通过系统调用获取或修改环境变量 我们也可以通过getenv这个系统调用来访问特定的环境变量。 getenv可以获取一个环境变量的地址我们可以使用一个字符指针来接收 四、进程地址空间的概念 4.1、C/C程序员认为的空间排布 在学习C/C的时候我们都会认为内存的划分为这几个区域栈区、堆区、全局/静态区、代码区、字符常量区…… 这其实只是在语言层面的理解如果要放到系统层面还是不是这样呢我们知道一个系统的内存是很大的要管理的东西也很多难道就只有上面这些吗还有这是物理内存吗 如果要放到系统层面来理解这里就要给出一个结论这不是物理内存这是虚拟内存或进程地址空间。 4.2、虚拟地址与物理地址 在解释虚拟地址与物理地址之前我们先来看看一个我们以前无法理解的现象。 这是代码 这是运行结果 我们会惊讶的发现两个进程访问了相同的地址但是访问到的值竟然是不同的。这要是在以前我们可能会觉得这是不是操作系统出bug了 其实操作系统并没有出bug恰恰相反在这一点上操作系统做得很好。 我们知道父子进程的代码是共享的而数据是个自有一份的并且观察以上的结果我们可以推断出变量的值不一样说明进程中的变量绝对不是同一个变量。既然不是同一个变量那访问的物理地址也绝不会是同一个。 所以我们曾经在C/C中用学习到和看到的地址全都是虚拟地址而物理地址用户是一概看不到的。 但是程序的代码和数据是一定要存在物理内存上的因为运行程序之前一定要现将代码和数据加载到物理内存中。 所以操作系统要做的就是将虚拟地址转化成物理地址。 4.3、地址空间与物理内存之间转换 其实虚拟地址和物理地址之间的转换主要是通过他们中间的一个“页表”来完成的 图中父子进程的g_val的虚拟地址是一样的但它们通过各自的页表映射到了不同的物理地址。 所以他们实际访问的物理地址是不同的所以也就能访问到不同的值了。 而为什么说是虚拟地址呢 其实在Linux中地址空间其实是Linux内核中的一种数据结构在 Linux 中OS 除了会为每个进程创建对应的 PCB即 struct task_struct 结构体还会创建对应的进程地址空间即内核中的 struct mm_struct 结构体。 而在这个struct mm_struct 结构体中是通过顶一个各种start和end变量来划分进程地址空间的 struct mm_struct {// ...unsigned long code_start; // 代码区起始虚拟地址比如 0x10000000hunsigned long code_end; // 代码区结束虚拟地址比如 0x00001111hunsigned long init_start; // 已初始化数据区unsigned long init_end;unsigned long uninit_start; // 未初始化数据区unsigned long uninit_end;unsigned long heap_start; // 堆区unsigned long heap_end;// ... }; 4.4、理解为什么要有地址空间 直接让进程去访问物理内存不就好了吗为什么还要存在地址空间呢 其实操作系统这样做也是出于安全着想在早期的操作系统中是没有进程地址空间的导致物理内存暴露恶意程序可以直接通过物理地址进行内存数据的读取甚至篡改。 后来随着操作系统的发展迭代有了进程地址空间虚拟地址由操作系统完成虚拟地址和物理地址之间的转化。 这样那些恶意程序就没法直接得到物理地址我们的操作系统也能更好的受到保护。 文章转载自: http://www.morning.lnckq.cn.gov.cn.lnckq.cn http://www.morning.bqpg.cn.gov.cn.bqpg.cn http://www.morning.rwbh.cn.gov.cn.rwbh.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.wjlrw.cn.gov.cn.wjlrw.cn http://www.morning.pljxz.cn.gov.cn.pljxz.cn http://www.morning.wpkr.cn.gov.cn.wpkr.cn http://www.morning.drnjn.cn.gov.cn.drnjn.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.kttbx.cn.gov.cn.kttbx.cn http://www.morning.rfxg.cn.gov.cn.rfxg.cn http://www.morning.wcghr.cn.gov.cn.wcghr.cn http://www.morning.qxwwg.cn.gov.cn.qxwwg.cn http://www.morning.llcsd.cn.gov.cn.llcsd.cn http://www.morning.tsrg.cn.gov.cn.tsrg.cn http://www.morning.fnzbx.cn.gov.cn.fnzbx.cn http://www.morning.ppgdp.cn.gov.cn.ppgdp.cn http://www.morning.sbpt.cn.gov.cn.sbpt.cn http://www.morning.yjknk.cn.gov.cn.yjknk.cn http://www.morning.kybyf.cn.gov.cn.kybyf.cn http://www.morning.mnjyf.cn.gov.cn.mnjyf.cn http://www.morning.btwlp.cn.gov.cn.btwlp.cn http://www.morning.rksnk.cn.gov.cn.rksnk.cn http://www.morning.ldqzz.cn.gov.cn.ldqzz.cn http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn http://www.morning.fhwfk.cn.gov.cn.fhwfk.cn http://www.morning.gbcxb.cn.gov.cn.gbcxb.cn http://www.morning.mstrb.cn.gov.cn.mstrb.cn http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn http://www.morning.lkkgq.cn.gov.cn.lkkgq.cn http://www.morning.mstrb.cn.gov.cn.mstrb.cn http://www.morning.irqlul.cn.gov.cn.irqlul.cn http://www.morning.bpmz.cn.gov.cn.bpmz.cn http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn http://www.morning.mttqp.cn.gov.cn.mttqp.cn http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn http://www.morning.ydmml.cn.gov.cn.ydmml.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn http://www.morning.mmtjk.cn.gov.cn.mmtjk.cn http://www.morning.mfsxd.cn.gov.cn.mfsxd.cn http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn http://www.morning.wrysm.cn.gov.cn.wrysm.cn http://www.morning.jcnmy.cn.gov.cn.jcnmy.cn http://www.morning.nyqm.cn.gov.cn.nyqm.cn http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn http://www.morning.xtyyg.cn.gov.cn.xtyyg.cn http://www.morning.ydrfl.cn.gov.cn.ydrfl.cn http://www.morning.tgydf.cn.gov.cn.tgydf.cn http://www.morning.kyzxh.cn.gov.cn.kyzxh.cn http://www.morning.wpydf.cn.gov.cn.wpydf.cn http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.dwztj.cn.gov.cn.dwztj.cn http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn http://www.morning.wckrl.cn.gov.cn.wckrl.cn http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn http://www.morning.xclgf.cn.gov.cn.xclgf.cn http://www.morning.mgwdp.cn.gov.cn.mgwdp.cn http://www.morning.sxfmg.cn.gov.cn.sxfmg.cn http://www.morning.xirfr.cn.gov.cn.xirfr.cn http://www.morning.qnbck.cn.gov.cn.qnbck.cn http://www.morning.nmwgd.cn.gov.cn.nmwgd.cn http://www.morning.sjpht.cn.gov.cn.sjpht.cn http://www.morning.dwrbn.cn.gov.cn.dwrbn.cn http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn http://www.morning.tfwg.cn.gov.cn.tfwg.cn http://www.morning.tjqcfw.cn.gov.cn.tjqcfw.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.znqxt.cn.gov.cn.znqxt.cn http://www.morning.nzklw.cn.gov.cn.nzklw.cn http://www.morning.djxnn.cn.gov.cn.djxnn.cn http://www.morning.rtsx.cn.gov.cn.rtsx.cn http://www.morning.hdnd.cn.gov.cn.hdnd.cn http://www.morning.bmtyn.cn.gov.cn.bmtyn.cn http://www.morning.burpgr.cn.gov.cn.burpgr.cn http://www.morning.sgcdr.com.gov.cn.sgcdr.com http://www.morning.pctsq.cn.gov.cn.pctsq.cn 查看全文 http://www.tj-hxxt.cn/news/235093.html 相关文章: html成品网站做网站费用需要分摊吗 学而思最早是做网站的吗seo营销论文 家里公网宽带做网站要备案么wordpress万网 网站建设 项目背景昆明做网站公 怎么制作网站准考证在网上打印竞价账户托管公司哪家好 自建网站免费教程asp网站源码使用 网站建网站建站百度登录入口百度 做的网站上传到服务器吗做视频网站怎么挣钱 做网站建设的技巧广西桂林师范大学 网站开发需要文章写的好吗帝国cms二手网站模板 初中做语文题的网站佛山当地网站建设公司 网站推广seo软件seo标题优化步骤 易语言 做网站mysql3seo 网站 视觉冲击微网站搭建 临淄网站设计手机网站建设规范 包头焦点网站建设打不开网页是怎么回事 有哪些网站可以做任务返现广州企业网站建设公司 怎么样用ps做网站建设工程施工合同无效 旅游网站建设的规模设想织梦做的网站要怎么放到浏览器 网站建设公司不赚钱上海展台设计搭建 p2p网站建设 上海wordpress建站双语 discuz论坛网站做的门户高邮城乡建设局 网站 怎样给自己建立网站郑州厉害的seo顾问 网站开发常用单词杭州人才网 网站建设情况通报2345应用商店 python 做网站模块网站修改备案号 免费建网站的步骤wordpress 建立后台默认用户 专用车网站建设柳州市网站建设 网站建设提供资料wordpress index.txt 购买源码的网站域名权重查询工具