Linux 进程(六) 环境变量

main函数参数:

        这是一个常见的main函数,那么main函数可以带参吗?

int main()
{return 0;
}

         答案是可以的!

        我们先看这样一段代码,首先给main函数带上两个参数。

        然后我们来看输出的结果。

        这样一组字符串是命令行解释器(bash)给我们输出的。

        后面是一串字符串,也就是命令行参数。

        bash 帮我们维护一个数组数组里面存储着我们输入的命令行参数的地址,bash读取命令行参数以空格为间隔,将这串字符传给main函数,也就造成了上面我们看见的情况。

        同时这段代码可以这样修改。

        同时也验证了argv[] 数组最后存储的是null,因为argv[i] == null 判断为假,循环结束。

        那么命令行参数有什么用呢?答命令行参数是Linux指令选项的基础。使得一个函数可以执行许多不同的功能。下面我们用命令行参数的形式来模拟一下±计算器。

        其实在Linux下,我们经常用一些命令行是带参数的 如 ls -l  ls -al 。

        比如在使用gcc命令时,gcc -o -E -S -c -g -static 这是都是相同的命令但使用其中不同的功能。

环境变量:

基本概念:

        环境变量(environment variables)一般是指在操作系统开辟的一块内存,用来指定操作系统运行环境的一些参数。
        如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
        环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。

PATH环境变量:

       在Linux系统下,我们不难发现执行自己的可执行程序 需要 ‘./ ’ ,而执行ls 诸如此类的命令(也是可执行程序),却不需要 ‘./’ 这是为什么呢?这是因为系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。我们没有告诉他在当前路径下寻找,而且path中有没有就会报“-bash: myprocess: command not found”

        那么如何查看PATH呢? $PATH

        那么怎么样才能使自己自己的程序不需要加 ‘./ ’ 也能执行呢?将自己的可执行程序放到上面的路径下(每一个路径都已 ‘ : ’ 为分隔符),或者将自己可执行程序的路径放到PATH中。

        1.将自己的可执行程序放到上面的路径下   

        但是,将自己的可执行程序当到操作系统的目录下会污染系统内置的环境变量。所以不建议这么做。

2.或者将自己可执行程序的路径放到PATH中

        如果不小心改掉环境变量,那么关闭xshell 从新登录一下就行。

        还有一些环境变量时存储当前,路径,用户名,家目录的如:

环境变量一些特性:

        如何查看全局的环境变量呢? env 

         如何自己设置一个环境变量呢? export

        删除一个环境变量:unset 

         环境变量是由bash创建的那么是否可以传给main函数呢?答案是可以的,bash在创建子进程时,同时创建了两张表,一张命令行参数表,一场环境变量表,都传递给了其创建的子进程。

        代码:

        执行内容:

        可以得出main函数确实可以继承bash 的环境变量。

        那么父进程可以继承子进程的环境变量吗?答案是可以的。

        首先我们在全局自定义一个环境变量,看看子进程内是否有。

        修改代码。

        说明环境变量确实有全局性,并且子进程可以继承父进程的属性。

        如果要获得某给特定的环境变量呢?就要使用 getenv。

        代码:  

        

本地变量:

        本地变量不是环境变量,没有全局属性,同时也不会被子进程继承

        本地变量可以直接在命令行上定义,不需要像环境变量上加export。

        同时使用set 查看本地所有的变量,包括环境变量。

        unset取消本地变量和环境变量。

        来写一段代码验证一下,环境变量可以被继承,而本地变量却不可以。

         执行结果说明环境变量可以被继承,本地变量却不行,只能在本地(bash进程)使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/229848.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI】一文读懂大模型套壳——神仙打架?软饭硬吃?

目录 一、套壳的风波此起彼伏 二、到底什么是大模型的壳 2.1 大模型的3部分,壳指的是哪里 大模型的内核 预训练(Pre-training) 调优(Fine-tuning) 2.2 内核的发展历程和万流归宗 2.3 套壳不是借壳 三、软饭硬…

Ubuntu 常用命令之 locate 命令用法介绍

🔥Linux/Ubuntu 常用命令归类整理 locate命令是在Ubuntu系统下用于查找文件或目录的命令。它使用一个预先构建的数据库(通常由updatedb命令创建)来查找文件或目录,因此它的查找速度非常快。 plocate 安装 locate 不是 Ubuntu 系…

语音AI小夜灯项目

一、项目简介 使用ESP32-S3N8R8模块作为主控芯片,S3内核增加了用于加速神经网络计算和信号处理等的指令,这使得我们可以使用它来快速解析训练好的语音模型进行语音识别的功能。 二、原理解析 本项目由四个部分组成,电源部分、LED照明部分、…

Spring Cloud Gateway 常见过滤器的基本使用

目录 1. 过滤器的作用 2. Spring Cloud Gateway 过滤器的类型 2.1 内置过滤器 2.1.1 AddResponseHeader 2.1.2 AddRequestHeader 2.1.3 PrefixPath 2.1.4 RequestRateLimiter 2.1.5 Retry 2.2 自定义过滤器 1. 过滤器的作用 过滤器通常用于拦截、处理或修改数据流和事…

【Matlab】基于遗传算法优化BP神经网络 (GA-BP)的数据时序预测(附代码)

资源下载: https://download.csdn.net/download/vvoennvv/88682033 目录 【Matlab】BP 神经网络时序预测算法 【Matlab】CNN卷积神经网络时序预测算法 【Matlab】ELM极限学习机时序预测算法 【Matlab】基于遗传算法优化BP神经网络 (GA-BP)的数据时序预测 【Mat…

什么是 NAS?

一、什么是 NAS? 在数字化时代,小型企业面临着日益增长的数据存储需求。为了应对这一挑战,网络附加存储(NAS)系统成为了许多企业的首选解决方案。NAS系统是一种连接到网络的存储设备,允许授权网络用户和异…

2024.1.3 Spark on Yarn部署方式与工作原理

目录 Spark集群类型有以下几种: Spark的部署方式有以下几种: Spark on YARN的部署方式有两种:client模式和cluster模式。 Spark底层的工作原理,执行流程 Spark集群类型有以下几种: Standalone模式:这是Spark自带的…

数据挖掘中的数据属性特点、描述性统计度量与相似度计算

目录 1. 引言 2. 数据挖掘中的数据属性 2.1 数值属性 2.2 标称属性 2.3 有序属性 2.4 无序属性 3. 描述性统计度量 3.1 中心趋势度量 3.2 离散程度度量 3.3 分布形状度量 4. 相似度计算 4.1 欧氏距离 4.2 余弦相似度 4.3 Jaccard 5. 数据挖掘中的案例应用 5.1 …

Vue2 - 数据响应式原理

目录 1,总览2,Observer3,Dep4,Watcher5,Schedule 1,总览 vue2官网参考 简单介绍下上图流程:以 Data 为中心来说, Vue 会将传递给 Vue 实例的 data 选项(普通 js 对象&a…

NSSCTF sql

开启环境: ?wllm1 回显正常,试试?wllm1 出现报错;加上%23正常 ?wllm-1or 11%23出现过滤 测试,空格用**替代, 等号用like替代 测试长度 ?wlmm1order/**/by/**/3%23正常 ?wlmm1order/**/by/**/4%23报错 长度为3,测试回显位置: ?wlmm-1union/**/select/**/1,2,3%23 …

【C#】知识点实践序列之Lock的锁定代码块

大家好,我是全栈小5,欢迎来到《小5讲堂之知识点实践序列》文章。 2024年第1篇文章,此篇文章是C#知识点实践序列之Lock知识点,博主能力有限,理解水平有限,若有不对之处望指正! 本篇验证Lock锁定代…

docker学习(二十、network使用示例host、none)

文章目录 一、host应用示例总结 二、none应用示例总结 network相关内容: docker学习(十八、network介绍) docker学习(十九、network使用示例bridge) docker学习(二十、network使用示例host、none&#xff0…

使用sdf文件+urdf文件模拟机器人示例(不用把urdf转sdf)

gazebo版本&#xff1a;harmonic&#xff1b; <launch> <group> <let name"robot_description" value"$(command xacro $(find-pkg-share gazebo_pkg)/urdf/total.xacro)"/> <node pkg"rviz2" exec"rviz2" name…

冠赢互娱基于 OpenKrusieGame 实现游戏云原生架构升级

作者&#xff1a;力铭 关于冠赢互娱 冠赢互娱是一家集手游、网游、VR 游戏等研发、发行于一体的游戏公司&#xff0c;旗下官方正版授权的传奇类手游——《仙境传奇》系列深受广大玩家们的喜爱。基于多年 MMORPG 类型游戏的自研与运营经验&#xff0c;冠赢互娱正式推出了 2D M…

python爬虫

python爬虫 一、Urllib1、互联网爬虫2、爬虫的核心3、爬虫的用途4、爬虫分类5、反爬手段6、urllib库的使用7、请求对象的定制8、编解码9、ajax的get请求10、ajax的post请求11、URLError\HTTPError12、cookie登录13、Handler处理器14、代理服务器 一、Urllib 1、互联网爬虫 解…

Allins 官网正式上线,铭文赛道进入 AMM 交易时代

“Allins 正在通过全新的 AMM 方案为BRC20及多链铭文资产拓展 DeFi 场景&#xff0c;官网的全新上线意味着铭文资产的交易正式进入 AMM 时代。”

java实现大文件分片上传

背景&#xff1a; 公司后台管理系统有个需求&#xff0c;需要上传体积比较大的文件&#xff1a;500M&#xff0d;1024M&#xff1b;此时普通的文件上传显然有些吃力了&#xff0c;加上我司服务器配置本就不高&#xff0c;带宽也不大&#xff0c;所以必须考虑多线程异步上传来提…

(一)CarPlay集成开发之概述与环境篇

系列文章目录 第一章 CarPlay集成开发之概述与环境篇 文章目录 系列文章目录概述开发环境依赖项总结 概述 CarPlay是由苹果公司开发的一款集成在iOS系统中&#xff0c;用于运行在已完成对接该系统的汽车中控台&#xff0c;仪表盘上的车载系统&#xff0c;该系统通过USB或者WI…

java进阶四-深入理解泛型和注解

泛型和注解是框架技术必备的技能 5 泛型5.1泛型理解5.1.1 泛型概念5.1.2 泛型的特点5.1.3 如何理解Java中的泛型是伪泛型&#xff1f;5.1.4 泛型的价值 5.2 泛型语法5.2.1 泛型类5.2.2 泛型接口3.2.3 泛型方法3.2.4泛型的上下边界3.2.5创建泛型数组 5.3泛型应用场景5.3.1数据库…

C++八股学习心得.3

1.C 数组 C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素&#xff0c;最高的地址对应最后一个…