环境变量及命令行参数

news2024/11/20 13:45:31

目录

一、环境变量的概念和基本命令

二、环境变量的组织结构及获取环境变量的方式

(1)组织结构

(2)获取环境变量

命令行第三个参数

通过第三方变量environ获取

通过系统调用getenv获取

三、命令行参数


一、环境变量的概念和基本命令

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

        环境变量可以被子进程继承下去(但是一定要export导出)。

        常见的环境变量:

        查看环境变量的方法:

        和环境变量相关的命令:

二、环境变量的组织结构及获取环境变量的方式

(1)组织结构

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串

(2)获取环境变量

命令行第三个参数

(这里的参数会在进程切换的时候自动传递)

#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获取

(也就是说用户即使不传参,也能通过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声明。

通过系统调用getenv获取

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

三、命令行参数

        我们之前就知道main函数中有三个参数,分别是argc,argv[ ],和env[ ]。他们分别是命令行参数的数量,命令行参数的起始地址,以及环境变量。

        命令行参数其实就是命令行解释器bash帮我们把我们敲到命令行中的内容保存下来,然后以空格为分隔符,将他们存放到一个char*的数组中,这个数组的最后一个元素会被写成NULL。

        然后我们main函数用argv[ ]等参数就能在内部解析命令行,针对不同的情况做if else判断来执行对应的代码。如:ls -a -l

        我们到这里其实就知道bash在执行代码的时候,其实就是fork创建了一个子进程,然后将命令行参数和环境变量在进程替换exec的时候传递给子进程,子进程解析命令行参数来执行不同情况的代码。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go语言对接微信支付与退款全流程指南

在互联网技术日益发展的今天&#xff0c;线上支付已成为不可或缺的一部分。作为一门简洁高效的编程语言&#xff0c;Go&#xff08;又称Golang&#xff09;凭借其强大的并发处理能力和高效性能&#xff0c;在后端开发领域越来越受到开发者的青睐。本文将详细介绍如何使用Go语言…

学习干货IF=93.6!开发临床预测模型:分步指南

预测患者未来结果对临床实践至关重要&#xff0c;有助于医生做出明智决策。尽管每年发布大量预测模型&#xff0c;但许多研究存在方法学局限&#xff0c;如样本量不足和模型验证不充分&#xff0c;这削弱了模型的实际应用价值。因此&#xff0c;必须深入探讨并改进这些局限性&a…

电力央企数智化转型中的大模型构建及智能巡检机器人的应用

在全球经济数字化转型的大背景下&#xff0c;电力行业面临着多重挑战&#xff0c;包括能源结构的转型、市场竞争的加剧以及环境保护的压力。电力央企作为国家能源供应的中坚力量&#xff0c;亟需通过数智化转型提升竞争力和服务水平。 随着今年年初我国首次将“开展‘人工智能行…

第十四届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)

一.题目分析 &#xff08;1&#xff09;.题目 &#xff08;2&#xff09;.题目分析 1.PWM输出分析 模式切换时&#xff0c;占空比要不变&#xff0c; 在五秒之内就要变化成目标频率&#xff0c;同时要求频率的步进值要小于200hz 为了使步进值小于200hz,那么在五秒的时间之内…

AI绘画:人工智能颠覆艺术创作的新时代

*AI绘画的震撼与魅力* 你是否曾幻想过&#xff0c;手握画笔便能创造出前所未有的艺术作品&#xff1f;当我们谈及艺术&#xff0c;总会联想到那份独特的创意和灵感。而如今&#xff0c;随着人工智能的迅猛发展&#xff0c;AI绘画正以其独特的方式&#xff0c;颠覆着传统的艺术…

XTR115电流环电路原理研究【文献】

作者&#xff1a;昝 勇&#xff0c;罗永红&#xff0c;王沛莹 中航工业 摘要&#xff1a; 针对各种数据采集与监控中抗恶劣电磁干扰环境的需求&#xff0c;给出一种基于XTB115的低功耗两线4&#xff5e;20 mA电流环数据传输电路&#xff0c;首先讨论了XTR115的性能特点和工作原…

RabbitMQ简介及安装类

RabbitMQ概述-MQ介绍 RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;它支持多种消息协议&#xff0c;并且可以轻松地与多种编程语言和框架集成。RabbitMQ是使用Erlang语言编写的&#xff0c;因此它具有高并发和高可用性的特点。以下是RabbitMQ的一些关键特性和概念 消息…

两文读懂DDD领域驱动设计,举例说明,通俗易懂【值得收藏】

最近对架构莫名的感兴趣&#xff0c;慢慢觉得架构本身是为了提供方便&#xff0c;定制规范&#xff0c;目标一致并更好的协作&#xff0c;它的变动也并不是像变形金刚一样&#xff0c;而是像幼苗一样按规律成长起来的 DDD是一种方法也是一种思想&#xff0c;大家前面个别概念看…

C++-再探构造函数(进阶)

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 前言 来到类和对象最后一个章节&#xff0c;这里的难度已经极大程度的降低了 再探构造…

FFMpeg源码分析,关键结构体分析(一)

http://lazybing.github.io/blog/categories/ffmpegyuan-ma-fen-xi/ 一、下载FFmpeg的编译源码 进入网站&#xff1a;http://ffmpeg.org/download.html二、编译源码 执行下述命令&#xff1a; ./configure --prefix/usr/local/ffmpeg --enable-debug3 --enable-ffplay sudo …

22年408数据结构

第一题&#xff1a; 解析&#xff1a; 观察一下这个程序&#xff1a;我们注意到最外层的循环是从i1开始的&#xff0c;每次ii*2&#xff0c;直到i<n为止&#xff0c;假设程序总共执行k次执行&#xff0c;则有2^(k1)>n。则k1>log(2)n这里是以2为底n的对数, k>log(2)…

Oracle11g服务器linux 安装

一&#xff0e;安装前准备 1.检查硬件&#xff08;内存&#xff0c;交换分区&#xff0c;tmp分区&#xff0c;cpu信息&#xff0c;内核版本&#xff09; # grep MemTotal /proc/meminfo # grep SwapTotal /proc/meminfo # df -k /tmp&#xff08;>400M&#xff09; # grep …

汽车氛围灯行业分析:未来几年年复合增长率CAGR为7.15%

汽车氛围灯是一种起到装饰和指示作用的照明灯&#xff0c;它属于装饰类的照明灯。通常是红色、蓝色、绿色等&#xff0c;主要是为了使车厢更加绚丽&#xff0c;烘托气氛&#xff0c;营造室内情调。氛围灯能够具有以下特性&#xff1a;功能性、舒适性、设计感、豪华感、个性化、…

【C++】——继承

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;Yan. yan.                        …

深入解析MySQL事务管理:ACID特性与基本操作

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

自动猫砂盆是养猫新型智商税吗?测评2024年热门款智能猫砂盆分享

铲屎官们只要一察觉到猫主子拉屎&#xff0c;就要马上去铲掉&#xff0c;这不仅是为了猫砂盆中其他干净的猫砂&#xff0c;更是为了防止猫屎残留发臭&#xff0c;特别是便便这种东西&#xff0c;一旦放久了就很招虫子&#xff0c;家里出现这些虫子又要大扫除消杀&#xff0c;特…

2024 年顶级智能文档处理解决方案

在当今的数字时代&#xff0c;智能文档处理(IDP) 对于提高业务效率和降低成本至关重要。IDP 可实现文档处理的自动化&#xff0c;最大限度地减少人工劳动和错误。由于有众多 IDP 解决方案可供选择&#xff0c;因此选择合适的解决方案可能具有挑战性。 本指南回顾了 10 款最…

Android Handler消息机制完全解析-同步屏障(三)

Android 消息机制Handler完全解析(一) Android 消息机制Handler完全解析(二) 前面两篇我们主要讲了Handler消息机制的一些基础&#xff0c;今天来看下消息屏障&#xff0c;通过本篇文章你将学到如下知识点 (1)什么是同步屏障 (2)为什么要有同步屏障 (3)同步屏障的原理 (4…

获取时隔半个钟的三天

摘要&#xff1a; 今天遇到需求是配送时间&#xff0c;时隔半个钟的排线&#xff01;所以需要拼接时间&#xff01;例如2024-10-08 14&#xff1a;30&#xff0c;2024-10-08 15&#xff1a;00&#xff0c;2024-10-08 15&#xff1a;30 <el-form-item label"配送时间&a…

24下软考中级系统集成项目管理工程师怎么备考?

备考资料&#xff1a; 1.教材 教材可以准备由清华大学出版社出版的系统集成项目管理工程师教材&#xff0c;这也是官方所推荐的教材&#xff0c;准备这本书是绝对没错的。 2.真题 真题也是在备考过程中少不了的资料之一&#xff0c;而且系统集成项目管理工程师考试就是需要多…