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

为何网站需改版自己免费制作app平台

为何网站需改版,自己免费制作app平台,flash个人网站首页模板,嘉定论坛网站建设目录 前言#xff1a; 一、命令行参数#xff1a; 1.main函数参数 2.为什么有它#xff1f; 二、环境变量#xff1a; 1.main函数第三个参数 2.查看shell本身环境变量 3.PATH环境变量 4.修改PATH环境变量配置文件 5.HOME环境变量 6.SHELL环境变量 7.PWD环境变…目录 前言 一、命令行参数 1.main函数参数 2.为什么有它 二、环境变量 1.main函数第三个参数 2.查看shell本身环境变量 3.PATH环境变量 4.修改PATH环境变量配置文件  5.HOME环境变量 6.SHELL环境变量 7.PWD环境变量 8.USER和LOGNAME环境变量 9.OLDPWD环境变量 三、理解环境变量 1.本地变量(临时变量) 2.set查看所有变量 3.export导入环境变量 4.unset取消环境变量 5.环境变量的全局属性  6.环境变量表 四、命令总结 总结 前言 我们已经了解了进程的很多概念上次讲到了进程调度算法这次我们来一个更炸裂的环境变量大家应该都学过JAVA每次都要下载并配置环境变量这次我们来彻底搞懂它。 一、命令行参数 1.main函数参数 我们平时写C语言main函数有参数吗其实main函数有参数但是我们从来不会写这次我们把环境变量参数都打印出来并看看都是什么 #includestdio.hint main(int argc, char *argv[]) {printf(argc: %d\n, argc);for (int i 0; i argc; i) {printf(argv[%d]: %s\n, i, argv[i]);}return 0; } 等等这里你可能无法直接编译生成可执行程序   我们平时使用的VS后面其实默认添加了所以我们再makefile中指定标准 此时再次make就不会报错。 我们在命令行中多传入几个参数并观察结果  当然也可以是其他字符 所以我们把main函数参数中的argv叫做命令行参数列表argc叫做参数的个数。 2.为什么有它 比如现在写一个只要两个参数的程序 #includestdio.h #includestring.h// code -opt1/-opt2/-opt3 int main(int argc, char *argv[]) {if (argc ! 2) {printf(Usage: code -opt\n);return 1;}if (strcmp(argv[1], -opt1) 0){printf(功能1\n);}else if (strcmp(argv[1], -opt2) 0){printf(功能2\n);}else if (strcmp(argv[1], -opt3) 0){printf(功能3\n);}else {printf(默认功能\n);}return 0; } 我们来测试一下 有没有似曾相识我们平时使用的命令都会加上选项而这些命令都是C语言实现的。可以让同一个程序根据命令行参数的选项表现出不同的功能。比如指令中选项的实现。 在命令行中我们平时输入的命令其实是一串字符串首先会被shell(bash命令行)拿到之后按照空格打散形成一张表(argv)和元素个数(argc)。 命令行启动的程序父进程都是shell。对于数据(尤其是只读的)子进程也能看到。  main函数也是被调用的父进程都是shell一般传入下面三个参数 二、环境变量 1.main函数第三个参数 我们刚才看到main函数的参数有三个main函数第三个参数env我们这次打印出所有的环境变量 以key-value方式构建的具有“全局”属性的变量叫做全局属性。 常见的环境变量 PATH: 指定命令的搜索路径 HOME: 指定用户的主工作目录(即用户登录到Linux系统中时默认的目录) SHELL: 当前Shell它的值通常是/bin/bash 2.查看shell本身环境变量 在命令行想看shell本身自己的环境变量输入env即可 和之前打印出来的一样。 这次我们修改代码 3.PATH环境变量 为什么系统知道命令在usr/bin目录下我们可以让他认识我们的路径吗 PATH环境变量告诉了shell执行命令时应该去哪个路径下查。如果我们想指定看一个环境变量可以使用如下命令 这代表当shell运行任何一个命令时首先要查PATH中的路径之后看里面有没有对应的命令。 PATH是一个路径集合是系统可执行文件的搜索路径的集合。 所以我们可以修改PATH把自己的路径添加到PATH中就可以直接执行自己的命令了。 至于为什么有的命令还能跑我们以后再解释。但是现在有一个问题我们把之前的路径都覆盖了怎么恢复其实在环境变量加载的时候我们就已经把其加载到了bash进程内部是内存级的保存在进程的上下文中。也就是相当于我们malloc出来一块空间此时把malloc空间中的内容修改了所以我们重启一下Xshell即可。 所以在修改PATH时不要直接把PATH修改为我们想修改的路径要把之前的路径加上去再添加我们的路径 所以环境变量PATH本质就是内存级的变量通过shell维护可以通过一定方式修改PATH变量。所以这次我们关掉Xshell依旧还是原来的PATH路径不会添加你之前添加的内容。 4.修改PATH环境变量配置文件  但是这些内容一开始是从哪里的来的最开始PATH环境变量一定不再内存中而是在系统的配置文件中。 当我登陆的时候会启动一个shell进程此时就会读取用户和系统相关的环境变量的配置文件形成自己的环境变量表。 所以我们修改配置文件我们一旦登录Linux一定是一个具体的用户在登陆登录后一定处在自己的家目录下所以系统中家目录下会存在两个配置文件(.bash_profile, .bashrc)。当bash启动时就会读取这两个环境变量形成自己的环境变量信息。 所以我们将之前code所在文件路径添加到.bash_profile文件中并观察效果 如果没有成功(因为刚才已经添加过了临时新的环境变量所以这里没有执行该命令)让一个更改后的配置文件生效可以使用该命令 source .bash_profile 我们之前讲解过uid也就是进程内部会记录是谁启动的这个进程。但是你启动进程的时候系统怎么会知道你是谁并且把你的uid写入到pcb中呢因为 5.HOME环境变量 因为命令行执行的命令都是bash的子进程所以当我们切换路径的时候也就把bash的cwd的属性给改了。 所以创建的所有进程路径都源自于bash的cwd路径 当我们切换路径就会改变bash的cwd 所以为什么最开始我们处于家目录中因为最开始读取配置文件中的环境变量(HOME)然后bash把自己的cwd设置在了HOME变量中。  所以系统读取配置文件时首先一定知道登录的用户是谁一旦发现不是root之后就会更改为/home/XXX把环境变量设置好之后chdir更改cwd即可。把bash的cwd改为当前工作路径(家目录下)。 6.SHELL环境变量 还有一个环境变量是SHELL它会记录系统启动时使用的哪个shell(当前就是bash) 7.PWD环境变量 还有一个环境变量是PWD是保存当前路径的 为什么要这么做 我们可以通过代码获取环境变量如果按照之前的方法是获取所有环境变量之后匹配这样并不优雅系统提供了对应的函数getenv getenv函数获取环境变量的内容返回char*。获取成功返回值失败返回NULL。 PWD是一个具体的命令用于显示当前目录路径。 CWD 是一个概念表示程序或进程当前的工作目录。  PWD的输出取决于进程的 CWD而 CWD 是进程可以动态修改的。 8.USER和LOGNAME环境变量 我们直接打印出环境变量观察这两者的内容 当前两者是一致的。此时执行su - 我们再先以gan身份登录之后登录到跟用户 所以当我们登陆的时候LOGNAME和USER是一致的su -执行后本质是以root身份登录的而su root不会改变原来的LOGNAME和USER只是改变了执行身份。 所以我们区分使用系统的用户以环境变量USER区分。 我们可以修改envtest.c代码来观察现象 之后先以gan用户执行之后su -再次执行该代码 也就是说我们可以通过代码来进行身份认证我们这里可以演示一下   #includestdio.h #includestdlib.h #includestring.hint main() {//可以让我的程序识别用户身份只让gan用户访问const char* who getenv(USER);if (strcmp(who, gan) 0) {printf(执行程序正常命令\n);return 0;} else{printf(无权访问!\n);return 1;}return 0; } 这样就可以写一些可以对用户权限进行控制的程序。  9.OLDPWD环境变量 我们先记录当前路径 之后cd ~回家查看env。发现有一个OLDPWD环境变量记录我们上次所在路径 再次cd - 所以PWD记录当前工作路径OLDPWD记录你上次所在工作路径。所以cd -就是基于这个环境变量实现的。  以上为认识环境变量。 三、理解环境变量 系统提供的具有全局属性的变量。 1.本地变量(临时变量) shell也支持我们直接在本地定义变量 这样定义的变量不属于环境变量我们使用env并查不到。 在命令行输入的a10这样的语句其实是一段字符串被shell先读到shell(一个进程)也就会把这个字符串维护起来就相当于malloc一块空间。这种变量叫做本地变量不会被环境变量查到。 2.set查看所有变量 如果现在想查到环境变量和本地变量都查到可以使用set来查询 本地变量一般给自己用。  3.export导入环境变量 我们也可以把本地变量导出到环境变量 以下这个图方便各位更好地理解环境变量本地变量和argv表  当我们export i之后会导入环境变量。 bash重启以后export的变量也会消失。 当然也可以直接使用export b100直接导入环境变量。 所以bash不仅认识变量还认识while循环等语句所以衍生出了一门shell脚本语言。 设计一个只执行一次的程序 #includestdio.h #includestdlib.h #includestring.h #includeunistd.hint main() {char* isrunning getenv(ISRUNNING);if (isrunning NULL){while(1){printf(当前进程首次启动!\n);sleep(1);}} else {printf(当前进程已经运行了!\n);}return 0; } 环境变量是可以被子进程继承的。 4.unset取消环境变量 我们使用unset取消导入的环境变量(unset不仅可以取消你自己定义的环境变量还可以取消大多数非只读的环境变量和 shell 变量包括一些由系统或 shell 自动设置的环境变量。不过只读变量如PWD等无法被取消)  5.环境变量的全局属性  环境变量可以被所有bash之后的进程全部看到所以环境变量具有全局属性。系统的配置信息尤其是具有指导性的配置信息它是系统配置起效的一种表现。 进程具有独立性环境变量可以用来进程间传递数据(只读数据)。 6.环境变量表 其实还有第三种获取环境变量的方法 使用environ获取环境变量 environ是一个包含在unistd.h中的全局变量是一个二级指针它指向环境变量的表 我们可以用代码来使用一下它 #includestdio.h #includestdlib.h #includestring.h #includeunistd.hextern char** environ;int main() {for (int i 0; environ[i]; i){printf(%s\n, environ[i]);}return 0; } 四、命令总结 env :  查看shell本身自己的环境变量。 set : 查看所有变量包括临时变量。 unset : 取消非只读环境变量。 export : 导入环境变量 总结 我们目前已经认识了很多的环境变量但是其实使用的还是很少而且它到底有什么用我们会在下一节进程地址空间来更加具体的理解。加油吧各位
http://www.dnsts.com.cn/news/49838.html

相关文章:

  • 建设网站服务器自营方式的特点广州番禺南村
  • 网站推广烟台公司电话游戏网站html模板
  • 买国外域名 网站校园网络工程设计方案
  • 模板和网站可以分开吗中贸网做的网站
  • 网站后台账号密码忘记了怎么办做网站界面需要注意什么
  • 优秀网站制作实例展示建设工程合同印花税计税依据
  • 网站页面太多怎么做网站地图网页设计与制作建立站点实践报告
  • saas建站没有网站源代码么如何做网站的版块规划
  • 站点推广策略包括做dna胎儿亲子鉴定网站
  • 西安网站建设方案优化备案多个网站
  • wordpress多站点建站大学生做网上英语翻译兼职网站
  • 企业网站 自适应深圳涂料网站建设
  • 做网站游戏的网站有哪些wordpress 插件 上传
  • 网站手机版如何制作网站及单位网站建设情况
  • 免费做橙光封面的网站pc网站设计哪家公司好
  • 网站快照查询马鞍山网站建设服务开发
  • 泰安网络营销网站建设网站建设审批
  • 北京著名网站设计公司为企业做网站
  • 温州科技网站建设搜讯网站建设
  • 图书类网站开发的背景WordPress点击显示弹窗内容
  • 汽车租赁网站开发ks数据分析神器
  • 网站关键词怎么修改汕头网站关键词推广
  • c 写网站建设框架网页美工设计的四大原则
  • wordpress 网页存在哪里网站优化都是怎么做的
  • 模板网站如何建设优惠券领取网站开发
  • 网站开发 盈利唐山seo公司
  • 可视化 网站开发工具三明做网站
  • 班级网站模板下载佛山高端画册设计公司
  • 营销型外贸网站建设软件西安做网站优化公司报价
  • 四川网站推广优化公司网站登陆后台管理中心不能修改前台主页