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

河南企业网官方网站可以自己做网站卖东西

河南企业网官方网站,可以自己做网站卖东西,网站流量多少,市场营销女生好就业吗?文章目录 命令行参数环境变量环境变量的概念常见的环境变量PATH 环境变量表本地变量和环境变量命令分类 本篇主要解决以下问题#xff1a; 什么是命令行参数命令行参数有什么用环境变量是什么环境变量存在的意义 命令行参数 在学习C语言中#xff0c;对于main函数当初的写… 文章目录 命令行参数环境变量环境变量的概念常见的环境变量PATH 环境变量表本地变量和环境变量命令分类 本篇主要解决以下问题 什么是命令行参数命令行参数有什么用环境变量是什么环境变量存在的意义 命令行参数 在学习C语言中对于main函数当初的写法是没有任何参数的但是实际上main函数是可以有参数的比如下面的写法 #include stdio.hint main(int argc, char* argv[]) {int i 0;for (i 0; i argc; i){printf(%d:%s\n, i, argv[i]);}return 0; }因此这里将内容打印出来看看这当中是什么内容 程序运行结果如图所示 [testVM-16-11-centos 10_15]$ vim myproc.c [testVM-16-11-centos 10_15]$ make gcc -o myproc myproc.c [testVM-16-11-centos 10_15]$ ./myproc 0:./myproc其实命令行参数是用来支持各种指令级别的命令行选项的设置例如这里的argv数组中存储的字符串其实就是用户写的命令而如果现在我在运行程序的时候带上选项 [testVM-16-11-centos 10_15]$ ./myproc -a -b -c -d 0:./myproc 1:-a 2:-b 3:-c 4:-d会发现打印的信息就是以用户写的指令开始进行分割然后把信息放到数组中从中其实看出用户在运行程序的时候写的命令或者是带的选项都可以被main函数读取并且传参函数体内部就可以利用这个机制实现不同的选项带来的结果 比如Linux中有ls命令用来查看文件夹中的内容如果使用的是ls -a或者是ls -l这些选项就会产生不同的结果实际上这样的结果也是通过这个原理通过读取argv数组中的内容就可以实现各种目的 这里其实可以模拟实现一个touch命令 #include stdio.h #include string.hint main(int argc, char* argv[]) {if (argc 2){if (strcmp(argv[0], ./myproc) 0){FILE* pf fopen(argv[1], w);if (pf NULL){perror(fopen fail\n);return 1;}fclose(pf);}else {printf(commend error,you should use ./myproc [name]\n);}}else{printf(commend error,you should use ./myproc [name]\n);}return 0; }运行结果如下所示 [testVM-16-11-centos 10_15]$ ./myproc test.txt [testVM-16-11-centos 10_15]$ ll total 20 -rw-rw-r-- 1 test test 64 Oct 15 15:36 Makefile -rwxrwxr-x 1 test test 8568 Oct 15 15:57 myproc -rw-rw-r-- 1 test test 602 Oct 15 15:57 myproc.c -rw-rw-r-- 1 test test 0 Oct 15 15:57 test.txt这样就模拟实现了一个touch指令只不过现在还有一个问题在实际使用touch指令的时候我并不需要带前面的这个./而是直接可以运行那么为什么呢 这就涉及到了环境变量的问题 环境变量 首先不管是在什么系统什么环境中要执行一个命令必须要找到相应的可执行程序这是一定的那么由此可以引出环境变量的概念 环境变量的概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数如我们在编写C/C代码的时候在链接的时候从来不知道我们的所链接的动态静态库在哪里但是照样可以链接成功生成可执行程序原因就是有相关环境变量帮助编译器进行查找环境变量通常具有某些特殊用途还有在系统当中通常具有全局特性 常见的环境变量 PATH指定命令的搜索途径HOME指定用户的主工作目录SHELL当前Shell一般是/bin/bash 那么现在查看touch命令的位置 [testVM-16-11-centos 10_15]$ which touch /usr/bin/touch从中可以看出touch命令确实是被放在了这个地方而正是由于它被放在了这个文件夹内因此在运行的时候会默认在这个路径下搜索运行因此如果我们把前面定义的myproc程序放到对应的目录下那么当执行命令的时候会优先到对应的目录下搜索因此也就不需要指定是在当前路径而是会选择去一个默认路径如果基于这样的理论就可以找到对应的内容了 [testVM-16-11-centos 10_15]$ sudo mv myproc /usr/bin [testVM-16-11-centos 10_15]$ myproc test1.txt [testVM-16-11-centos 10_15]$ ll total 8 -rw-rw-r-- 1 test test 64 Oct 15 15:36 Makefile -rw-rw-r-- 1 test test 600 Oct 15 16:08 myproc.c -rw-rw-r-- 1 test test 0 Oct 15 16:09 test1.txt -rw-rw-r-- 1 test test 0 Oct 15 15:57 test.txt从中可以看出确实创建成功了也就是说上面的理论是正确的 PATH 在PATH路径中存在的路径就是上面所说的默认搜索路径如果我们能想办法让路径增加呢也就是说能否通过增加PATH中的值就能达到在默认路径下搜索文件了在Linux中存在一个export命令可以修改PATH路径下面来进行执行 [testVM-16-11-centos 10_15]$ export PATH$PATH:/home/test/10_15 [testVM-16-11-centos 10_15]$ myproc test1.txt [testVM-16-11-centos 10_15]$ ll total 20 -rw-rw-r-- 1 test test 64 Oct 15 15:36 Makefile -rwxrwxr-x 1 test test 8568 Oct 15 16:19 myproc -rw-rw-r-- 1 test test 600 Oct 15 16:08 myproc.c -rw-rw-r-- 1 test test 0 Oct 15 16:21 test1.txt从中可以看出已经成功的将PATH路径添加到这里了于是在程序的默认搜索路径中就多了/home/test/10_15路径bash会在这个路径下进行搜索执行的命令 但是同时有一个问题当退出Linux机器重新访问后PATH文件中的路径又恢复成了原来的信息文件综上可以总结出一些信息 Linux机器在登陆的时候会发生什么 输入用户名和密码进行认证形成环境变量比如PATHPWDHOME这些根据用户名进行一定的初始化cd HOME 这样就可以根据不同的用户进入不同的目录中实现不同的权限级别的信息了 环境变量表 在引入环境变量表的概念前先看环境变量 和环境变量相关的命令 echo: 显示某个环境变量值export: 设置一个新的环境变量env: 显示所有环境变量unset: 清除环境变量set: 显示本地定义的shell变量和环境变量 上图展示了系统中的环境变量实际上在main函数的参数中是有第三个参数的而这个参数提供的就是环境变量表也就是说系统在启动程序的时候是可以选择给main函数进程提供两张表的 命令行参数表环境变量表 下面做实验来证明环境变量表的存在性 #include stdio.hint main(int argc, char* argv[], char* env[]) {int i 0;for (; env[i]; i){printf(%d:%s\n, i, env[i]);}return 0; }此时运行出的结果和前面基本相同从中也印证了前面说的原理在进程启动的时候系统会提供两个表供使用 思考 命令行启动的进程都是shell/bash的子进程这是前面进行进程学习的时候知道的但是问题在于子进程的命令行参数和环境变量是从哪里来的答案是父进程来的那么父进程的环境变量信息又是从哪里来的呢 此时要和前面的内容进行一些联系为什么每一次重新登陆都会为用户形成新的bash解释器并且新的bash解释器会形成自己的环境变量表信息呢这是由于它从配置文件中读取到了这些信息 由此可以得出一个结论环境变量信息是以脚本配置文件的形式所存在的 每一次登陆的时候bash进程会从一个叫做.bash_profile文件中读取内容由此为bash进程创建一张环境变量表信息由此bash在创建其他进程的时候就可以传递环境变量信息了 查看环境变量 # .bash_profile# Get the aliases and functions if [ -f ~/.bashrc ]; then. ~/.bashrc fi# User specific environment and startup programsPATH$PATH:$HOME/.local/bin:$HOME/binexport PATH 本地变量和环境变量 上面最后演示了环境变量的读取文件那么这里引入了一个新的概念叫做本地变量那么本地变量应该如何进行理解 直接用实验来论证 首先创建一个本地变量 [testVM-16-11-centos ~]$ MYENVhello [testVM-16-11-centos ~]$ echo $MYENV hello此时创建出的是一个本地变量但是本地变量并没有被放到环境变量中因此在环境变量中也是搜索不到这个本地变量的 [testVM-16-11-centos ~]$ env | grep MYENV # 无输出结果此时需要用一个命令export-可以将本地命令转到环境变量中去 [testVM-16-11-centos ~]$ export MYENV [testVM-16-11-centos ~]$ env | grep MYENV MYENVhello此时在环境变量中就找到了这个配置文件那么在main函数中是否会存在呢 [testVM-16-11-centos 10_18]$ ./myproc |grep MYENV 13:MYENVhello也找到了这个变量就进一步的论证了环境变量表是由bash传递给子进程的 现在重启Linux机器 # 找不到内容了 [testVM-16-11-centos ~]$ env | grep MYENV # 运行结果也找不到对应的内容 [testVM-16-11-centos ~]$ ~/10_18/myproc | grep MYENV这是由于在登陆Linux服务器后会根据配置文件中的信息对bash进行初始化而此时并没有进行初始化信息因此就需要对配置文件进行一些修改 # .bash_profile# Get the aliases and functions if [ -f ~/.bashrc ]; then. ~/.bashrc fi# User specific environment and startup programsPATH$PATH:$HOME/.local/bin:$HOME/bin# 增加配置信息 MYENVhello export MYENV export PATH此时继续重新启动 [testVM-16-11-centos ~]$ env | grep MYENV MYENVhello [testVM-16-11-centos ~]$ ~/10_18/myproc | grep MYENV 12:MYENVhello找到了对应的内容由此引出本地变量和环境变量 **本地变量**只在bash进程内部有效不会被子进程继承下去 **环境变量**通过让所有子进程继承的方式实现自身的全局性 由此得出一个结论环境变量是具有全局性的 命令分类 看下面的实验 # 将PATH变量设置为空 [testVM-16-11-centos ~]$ export PATH # 以下命令均不能使用 [testVM-16-11-centos ~]$ ll -bash: ls: No such file or directory [testVM-16-11-centos ~]$ touch -bash: touch: No such file or directory [testVM-16-11-centos ~]$ mkdir -bash: mkdir: No such file or directory # pwd仍然可以使用 [testVM-16-11-centos ~]$ pwd /home/test为什么呢 在Linux中的命令分类 常规命令shell通过fork让子进程执行的内建命令shell命令行的一个函数可以直接读取shell内部定义的本地变量 而在上面的测试中像lsmkdir这样的命令都是shell通过fork创建子进程来执行的而这里的PATH路径已经被用户破坏了因此找不到搜索的路径因此找不见是当然的事但是为什么pwd可以找到这是由于pwd这样的命令是内建命令这是shell命令行的一个函数可以直接读取shell内部的本地变量因此就可以找到对应的值进行输出了 本篇是关于命令行参数和环境变量的要清楚环境变量的组织形式 会提供一个environ指针这个指针会指向一张环境表环境表是一个字符指针数组每一个指针都会有一个字符串
http://www.zqtcl.cn/news/187822/

相关文章:

  • 太原网站建设解决方案做建筑机械网站那个网站好
  • 丹徒做网站产品外贸营销推广方案
  • 信息技术 网站建设教案做是么网站
  • 网站建设培训报名wordpress 到小程序
  • 郑州做网站软件建设网站培训
  • 做网站卖东西赚钱吗凡科互动官网登陆
  • 免费写作网站通道一通道二通道三免费
  • 腾讯云做网站选哪个网络广告推广员
  • 昆明网站开发哪家好做网站怎么做小图标
  • 泉州做外贸网站成都idc机房托管
  • 南京林业大学实验与建设网站宁波软件开发制作
  • 北京专业网站制作服务郑州有学网站制作
  • 搭建wordpress需要什么样的环境专注软件优化分享的网站
  • 网站备案后 如何建设下载免费ppt模板
  • 重慶网站建设网络服务器可提供的常见服务有什么、什么、什么和什么服务
  • 网站制作有限公司英文都不懂 学网站建设维护难吗
  • 深圳网站建设公司开发制作网站免费的网页网站
  • 开发网站公司德州做网站公司电话
  • 公司门户网站开发个人网站备案成功后怎么做
  • 远程医疗型网站开发三合一网站有必要吗
  • 什么网站是用html做的网站制作成本多少钱
  • 邢台企业网站制作建设wordpress多站点配置教程
  • 湖北省建设厅网站a群诸城网站价格
  • 江苏网站设计如何设置wordpress不自动更新
  • 已经有网站怎么做淘宝客网站建设 国外
  • 百度新闻源网站株洲在线论坛二手市场
  • 招聘做微信公众号网站维护推广网上国网的好处
  • php企业网站通讯录管理系统查找企业资料的网站
  • 专门做娱乐场所的设计网站有虚拟主机wordpress
  • 在线制作书封网站建德建设局官方网站