您的位置:首页 > 文旅 > 旅游 > 上海网页制作多少钱_如何建设网站站点_百度投放广告_饥饿营销案例

上海网页制作多少钱_如何建设网站站点_百度投放广告_饥饿营销案例

2025/3/17 7:10:39 来源:https://blog.csdn.net/qq_58761784/article/details/144182385  浏览:    关键词:上海网页制作多少钱_如何建设网站站点_百度投放广告_饥饿营销案例
上海网页制作多少钱_如何建设网站站点_百度投放广告_饥饿营销案例

目录

1.基本概念

2.常见环境变量

3.查看环境变量方法

 4. 和环境变量相关的命令

 5. 环境变量的组织方式

5.1 环境变量表

5.2 命令行参数表

6. 通过代码如何获取环境变量

命令行第三个参数

 通过系统调⽤获取或设置环境变量

通过第三方变量environ获取

7.环境变量通常是具有全局属性的 


1.基本概念

• 环境变量(environment variables)⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数


• 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪
⾥,但是照样可以链接成功,⽣成可执⾏程序,原因就是有相关环境变量帮助编译器进⾏查找。


• 环境变量通常具有某些特殊⽤途,还有在系统当中通常具有全局特性

2.常见环境变量

• PATH : 指定命令的搜索路径

我们在Linux中执行一个c语言程序,需要带上./ :

本质上,Linux中的一个个指令,都是程序,既然都是程序 ,为什么我们编写的程序需要带上./ ,而指令不需要呢?

答:./表示当前路径,它这说明要执行一个程序,必须先找到它的位置。之所以指令前不需要加./,是因为系统当中存在环境变量帮助我们找到该指令的位置

    这个环境变量就是PATH!当我们使用一个指令时,PATH会告诉系统去哪些路径下找到我们使用的指令的二进制文件,也就是说,PATH存着系统搜索指令的默认搜索路径,当我们执行一个指令时,系统只在PATH保存的默认搜索路径下搜索。

使用指令——env可以查看系统中所有环境变量:

env

执行这个命令:

    环境变量名称=内容,我们可以看到很多这种形式的环境变量,也可以看到PATH的内容是被“:”分隔开的几个路径,执行某个指令时就会依次从这些路径中找该指令的二进制文件,如果找到了就执行,直到最后一个路径都没找到就提示”command not found“。 

• HOME : 指定⽤⼾的主⼯作⽬录(即⽤⼾登陆到Linux系统中时,默认的⽬录)
• SHELL : 当前Shell,它的值通常是/bin/bash。 

3.查看环境变量方法

echo $NAME //NAME:你的环境变量名称

例如我们要查看PATH的内容:

echo $PATH

 这样就拿到了PATH的内容:

 1. 创建hello.c⽂件

#include <stdio.h>
int main()
{
printf("hello world!\n");
return 0;
}

2. 对⽐./hello执⾏和之间hello执⾏
3. 为什么有些指令可以直接执⾏,不需要带路径,⽽我们的⼆进制程序需要带路径才能执⾏?

答:./表示当前路径,它这说明要执行一个程序,必须先找到它的位置。之所以指令前不需要加./,是因为系统当中存在环境变量帮助我们找到该指令的位置
4. 将我们的程序所在路径加⼊环境变量PATH当中, export PATH=$PATH:hello程序所在路径
5. 对⽐测试
6. 还有什么⽅法可以不⽤带路径,直接就可以运⾏呢?

 4. 和环境变量相关的命令

1. echo: 显⽰某个环境变量值
2. export: 设置⼀个新的环境变量
3. env: 显⽰所有环境变量
4. unset: 清除环境变量
5. set: 显示本地定义的shell变量和环境变量

 5. 环境变量的组织方式

5.1 环境变量表

每个程序都会收到⼀张环境表,环境表是⼀个字符指针数组,每个指针指向⼀个以’\0’结尾的环境
字符串,这个表叫环境变量表,它的本质是一个指针数组,环境变量是由一个个字符组成的,数组各个指针各自指向一个环境变量。

5.2 命令行参数表

 当一个指令被执行,这个指令首先会被bash先拿到,拿着这个指令到PATH保存的路径中一个一个找。但是执行一般都带参数:

ls -a

那么这个-a选项是如何被处理的呢?

   事实上,系统中还有一张表叫命令行参数表,当我们执行带参数的指令时,也是先被bash拿到。先创建一个命令行参数表,然后拿着命令去PATH保存的路径下一个一个找,找到了就执行,找不到就提示:”command not found“。

结论:bash内部有两张表。

如果系统中存在十个用户呢

那么就会存在十个bash,每个bash都各自有两张表,一张环境变量表,一张命令行参数表

6. 通过代码如何获取环境变量

命令行第三个参数

main函数有参数吗?

有,最少为0个,最多为3个。

获取环境变量除了使用env命令之外,还可以使用命令行的第三个参数来获取

#include <stdio.h>
int main(int argc, char *argv[], char *env[])
{
int i = 0;
for(; env[i]; i++){
printf("%s\n", env[i]);
}
return 0;
}

• 通过第三⽅变量environ获取

#include <stdio.h>
int main(int argc, char *argv[])
{
extern char **environ;
int i = 0;
for(; environ[i]; i++){
printf("%s\n", environ[i]);
}
return 0;
}

libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头⽂件中,所以在使⽤时 要⽤
extern声明。 

运行这段代码:

 

从第三个参数中,我们也获取到了所有环境变量。这不就是环境变量表吗?是的,系统将环境变量表的内容都传给了main函数的第三个参数第二个参数我们可以看作是命令行参数表。 这是如何让实现的呢?事实上,main函数是被别的函数调用的,从main函数有返回值也可以看出,假设这个函数叫_start,它会先判断main函数有没有参数,有多少个参数来决定是否传参数和传多少个参数:

 通过系统调⽤获取或设置环境变量

• putenv , 后⾯讲解
• getenv , 本次讲解

getenv作用:获取指定环境变量的内容。

#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%s\n", getenv("PATH"));
return 0;
}

常⽤getenv和putenv函数来访问特定的环境变量。 

假如我要写一个程序,只能让我自己执行,其他用户执行不了:

可以使用USER环境变量, 获取我们当前用户,通过对比字符串的方法,如果与我们的id匹配就能执行,如果不匹配就不能执行。这就是一个简单的身份识别程序。

通过第三方变量environ获取

   environ是一个全局变量,类型为“char**“,作为一个二级指针,它指向环境变量表的第一个元素,因为环境变量表是一个指针数组,环境变量表的元素都是一级指针

#include <stdio.h>
int main(int argc, char *argv[])
{
extern char **environ;
int i = 0;
for(; environ[i]; i++){
printf("%s\n", environ[i]);
}
return 0;
}

7.环境变量通常是具有全局属性的 

环境变量通常具有全局属性,可以被⼦进程继承下去

include <stdio.h>
#include <stdlib.h>
int main()
{
char *env = getenv("MYENV");
if(env){
printf("%s\n", env);
}
return 0;
}

本章完。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com