三亚谁做网站,自学家装设计从哪入手,三丰云做网站步骤,狼雨的seo教程#x1f381;个人主页#xff1a;我们的五年
#x1f50d;系列专栏#xff1a;Linux课程学习
#x1f337;追光的人#xff0c;终会万丈光芒
#x1f389;欢迎大家点赞#x1f44d;评论#x1f4dd;收藏⭐文章 目录
命令行参数#xff1a;
用命令行参数实现不同…个人主页我们的五年
系列专栏Linux课程学习
追光的人终会万丈光芒
欢迎大家点赞评论收藏⭐文章 目录
命令行参数
用命令行参数实现不同功能的程序
main函数的参数是谁传递的
mian函数被其他的函数调用
环境变量
查看环境变量
为什么指令可以不带路径就能运行
让我们自己的程序也可以不带路径运行
环境变量的配置文件
用户的配置文件 1.变量定义在for循环中在c99和c中才支持
gcc $^ -o $ -stdc99
2.命令行也是一个进程它的父进程都是shell。
3.对于父子进程对于父进程只读的数据不会修改的数据不会拷贝一份但是子进程可以看到。
4.编译器加载器操作系统表示互相割裂的彼此有联系。
5.env和argv都是以NULL结尾env没有个数可以通过这样的方法进行打印env。
6.echo进行打印时如果不加$表示的是字符串加$才表示变量。
7.PATH……这样进行修改环境变量PATH是覆盖式的修改。
8.我们进行的环境变量的修改只是改了内存级的环境变量进程中的环境变量。当我们退出以后环境变量重新被加载这样就没有了我们之前修改的环境变量。环境变量在系统的配置文件中。文件时磁盘级存储的。
9.打开shell---》启动一个进程---》读取系统和用户的环境变量》在内存中就会保存这些环境变量
10.source 文件让配置文件生效。
命令行参数 int main(int argc,char* argv[ ]) argc表示参数的个数crgv[]表示参数清单是一个一个的字符串。
根据下面的测试结果我们知道argv是我们在命令行输入的命令所以argv[1]是./code 后面的根据输入的命令而定。
#include stdio.hint main(int argc,char* argv[])
{printf(argc:%d\n,argc);for(int i0;iargc;i){printf(agrv[%d]:%s\n,i,argv[i]);}return 0;
}用命令行参数实现不同功能的程序
有了命令参数让一个程序可以实现不同的功能。
比如命令中的选项的实现。
#include stdio.h
#include string.h int main(int argc,char* argv[])
{ if(argc2) { printf(未传参数,opt1opt2opt3\n); } else if(argc2) { printf(参数过多pt1opt2opt3\n); } else if(strcmp(argv[1],opt1)0) { printf(l love xy!\n); } else if(strcmp(argv[1],opt2)0) { printf(l love xy!,Future home will have bathtubs!\n); } else if(strcmp(argv[1],opt3)0) { printf(l love you,Future home will have bathtubs!l promise!\n); } else { printf(参数错误\n); } return 0;
}
main函数的参数是谁传递的
1.首先被shell命令行解释器拿到。然后shell根据空格就形成了一张表argv也就可以知道元素个数argc。这张表中每一个都指向一个字符串最后以NULL结尾。 2.命令执行的时候给进程传递命令行参数。此时就形成了全局的argc和argv[ ]命令行参数是不会发生变化的这样子进程不用拷贝一份argc和argv[ ]不会进行修改只需要只读就行。但是子进程也可以看到。
mian函数被其他的函数调用
根据参数的不同就调不同的mian函数。 环境变量
mian函数中的env环境变量。
mian中的argv和env都是一张表结构。
查看env因为argv和env都是以NULL结尾的所以我们可以以env[i]进行判断真假进行打印所以的env。
for(int i0;env[i];i)
{printf(env[%d]:%s\n,i,env[i]);
}
查看环境变量
1.环境变量是指操作系统中用来指定操作系统运行环境的一些参数。
2.启动的任何一个进程都会传递这些参数。所以我们才能写一个程序通过env打印环境变量。
3..环境变量一般用于特殊用途一般具有全局属性。
4.比如我们从来不知道我们要链接的动态库在哪里还是可以链接成功。这是环境变量帮助编译器进行查找。
环境的变量的基本格式keyvalue全局变量。
全部都是什么什么 HISTSIZE表示命令保存条数。 PATH告诉shell应该去哪个路进行查找指令。 PWD当前用户所在目录。 为什么指令可以不带路径就能运行
PATH环境变量告诉了shell应该要去哪个路径下查找。 echo $PATH打印PATH环境变量。 有很多的路径以作为分隔符。 我们自己的程序要带./才能找到我们要执行的程序。
而系统就能知道指令在/user/bin路劲下。
PATH环境变量系统可执行文件的搜索路径集合。
我们进行的环境变量的修改只是改了内存级的环境变量进程中的环境变量。当我们退出以后环境变量重新被加载这样就没有了我们之前修改的环境变量。 让我们自己的程序也可以不带路径运行
PATH……PATH覆盖式的修改环境变量PATH。
方法一
可以把我们的程序拷贝到PATH中的任何一个目录下。
方法二
在PATH中加入我们的可执行程序的目录。可以先pwd查看然后echo $PATH查看PATH最后把两个进行拼接就可以了。
也可以直接$PATH加上分隔符最后加上我们的路径。
如果我们在配置文件中修改PATH那么每次启动shell的时候我们新增的PATH被加载。
环境变量的配置文件 此时在用户下的两个环境变量都是隐藏文件以.开头 .bashrc .bash_profile 用户的配置文件
用户的配置文件在启动shell的时候也是要被加载的。
它也是以$PATH的方式进行增加新的PATH环境变量。 让配置文件生效source 文件