Linux——环境变量

进程具有的性质:

竞争性:系统进程数目众多但是cpu资源少量,所有为了更高效的完成任务,进程之间有了竞争。

独立性:我们平时在使用各种各样的软件,那么万一某一个崩了,会影响其他的应用吗?答案是不会的。 这便是独立性。

并行:多个cpu同时执行多个任务叫做并行。

并发:一个cpu使用进程切换的方式,让多个进程都得以推进的方式称为并发。

大部分的一般都是处于并发的方式,特殊的服务器会有多个cpu处于并行状态。

关于进程的切换:在进程切换的时候放在内存中的一定是pcb结构体。在切换到另一个进程的时候先进行

如果A程序运行,寄存器里面一定保存的是A的临时数据。寄存器中A的临时数据叫做A的上下文。上下文数据绝对不可以被丢弃。当进程A切下来的时候需要带走进程A的上下文数据,上下文数据,里面带有已经运行的数据状态,对当前运行状态的存档,以便在下次切换回来的时候,回复上次运行的状态。

CPU的寄存器有一份但是cpu上下文可以有多份,分别对应不同的进程。

环境变量:

我们在平常运行指令的时候都是直接执行的,但是其他的指令确显示

 command not found,这是为什么呢?有些指令不需要带路径就可以执行,有些指令不需要带路径就可以只想,这些是为什么呢?答案是有一个默认文件夹目录,在使用命令的时候,就先在默认的文件夹里查找,然后寻找其他的文件夹里面有没有该命令。

环境变量具有全局属性,可以被对象继承下去,

env 命令可查看所有的环境变量。

常见的环境变量:

PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash

path这个路径是我们一般命令所搜索的路径,一般我们打Linux命令的时候现在这个文件夹下搜索有没有,如果有则直接执行,如果没有则显示 commond not found.

查看环境变量 echo $PATH

这条命令可以查看环境变量的所在路径,这个路径就是存放环境变量的一个路径。 

我们可以看到这么默认的指令确实是在这个文件夹里面存放着。

那么我们有什么办法可以让我们的编译生成的二进制程序直接运行?当然是有的。

将我们编译完成的二进制命令添加到环境变量中去使用export命令将我们的二进制程序添加到临时变量中去,但是这样子会有一个问题,就是只在此次运行中有效,如果你服务器重启的话,就无效了。只能再次添加。

使用方法export PATH=$PATH:程序所在路径。

 这样子在查看环境变量的时候就会发现在环境变量里面多了一个文件夹目录。环境变量里面,每一个:  。都代表一个环境变量目录。

还有另外一个方法就是,将我们的程序添加到默认的环境变量目录里面去,这样的话我们的二进制文件就直接添加到环境变量目录里面了,这样子的话就不用添加环境变量目录了,因为我们已经将需要运行的程序直接放到环境变量里面了,但是这样子有一个问题,我们很多都只是本次需要添加到环境变量里面的,这个东西是临时的,不需要一直存在,这样子会导致如果环境变量过多的时候很难拿分辨出来哪一个是我们当初添加的环境变量所以不是很推荐。

main函数的参数

main函数最多可以带3个参数  int argc  |   char*argv[]   |   char *env  | 

参数3是环境变量类型

环境变量一般是作为字符串,被当作字符串指针传递给main函数。 

可以通过这样的方式打印出环境变量。不管environ必须使用extern。

打印结果:

getenv('环境变量名')函数可以直接获取环境变量。

那么环境变量是谁导入的呢?——父进程。默认所有环境变量会被子进程继承。

int argc  |   char*argv[] 分别代表命令行参数的个数,以及命令行参数传入的参数作为字符串。

命令行参数往往父进程拿到后给子进程,所有命令行参数也属于父进程。

变量既有全局变量也有普通变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值