[Linux进程概念]命令行参数|环境变量

news2024/11/26 10:24:36

目录

一、命令行参数

1.什么是命令行参数

2.为什么要有命令行参数

(1)书写的代码段

(2)实际的代码段

3.Linux中的命令行参数

二、环境变量

1.什么是环境变量?

2.获取环境变量

(1)指令获取

​编辑

​编辑

(2)代码获取

(3)系统调用获取

3.常见环境变量

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

5.环境变量具有全局属性


一、命令行参数

1.什么是命令行参数

  • 命令行参数(Command-Line Arguments)是指在命令行界面(CLI,Command-Line Interface)中运行程序时,紧随程序名称之后传递给程序的额外信息或指令。这些参数允许用户自定义程序的行为,而无需修改程序代码。命令行参数通常用于指定输入文件、输出文件、配置选项、运行模式等。

2.为什么要有命令行参数

  • 同一个程序,可以根据得到的参数、选项的不同,表现不同的功能

(1)书写的代码段

int main()
{
    return 0;
}

(2)实际的代码段

int main(int argc,char*argv[])
{
    return 0;
}
  • argc(argument count),表示传递给程序的命令行参数的数量(包括程序本身的名称)。argc的值至少为1,因为第一个参数始终是程序的名称
  • argv(argument vector),存储了所有的命令行参数。argv数组中的每个元素都是一个指向字符串的指针,这些字符串包含了每一个传递给程序的命令行参数。argv[0]是程序的名称,argv[1]是传递给程序的第一个参数,以此类推

3.Linux中的命令行参数

ls -a -l 
  • 这就是Linux中的一个命令行参数,首先将其以字符串存储,被shell拿到后按照空格分隔,形成argv表,再得到argc参数


二、环境变量

1.什么是环境变量?

  • 环境变量(Environment Variables)是在操作系统中用来指定操作系统运行环境的一些参数。这些参数定义了程序运行时的各种配置,比如文件路径、系统资源位置、程序行为等。环境变量可以被操作系统及其上运行的程序读取和使用
int main(int argc,char*argv[],char*env[])
{
    
}
  • 图示表示:

2.获取环境变量

(1)指令获取

env

echo $NAME

(2)代码获取

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

(3)系统调用获取

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
	printf("%s\n",getenv("PATH"));
	return 0;
}
  • getenv函数
char *getenv(const char *name);

参数:

  • name:一个指向以空字符结尾的字符串的指针,该字符串包含要检索的环境变量的名称

返回值:

  • 如果环境变量存在,getenv 返回一个指向该环境变量值的指针
  • 如果环境变量不存在,getenv 返回 NULL

3.常见环境变量

  • PATH:指定命令的搜索路径。当用户在命令行中输入一个命令时,系统会在PATH环境变量中列出的目录中查找对应的可执行文件
  • HOME:指定用户的工作目录,即用户登录到系统时所处的默认目录
  • USER:指定当前登录用户的用户名
  • TEMP:指定临时文件夹的路径。当程序需要创建临时文件时,会在这个目录下创建
  • SHELL:当前用户的Shell类型,如/bin/bash
  • LANGUGE:语言相关的环境变量,多语言系统可以修改此环境变量来设置程序的语言偏好
  • MAIL:当前用户的邮件存放目录(在某些系统中可能不适用)
  • PS1:基本提示符,对于root用户是#,对于普通用户是$(主要在Linux和macOS中)
  • HISTSIZE:历史记录数(主要在Linux和macOS的shell中)
  • LOGNAME:当前用户的登录名(主要在Linux中)
  • HOSTNAME:指主机的名称(主要在Linux和macOS中)

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

  • echo:显示某个环境变量值
  • enport:设置一个新的环境变量
  • env:显示所有的环境变量
  • unset:清楚环境变量
  • set:显示本地定义的shell变量和环境变量

5.环境变量具有全局属性

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
	pid_t id = fork();
	if(id == 0)
	{
		printf("%s\n",getenv("SHELL"));
		sleep(1);
	}
	else
	{
		printf("%s\n",getenv("SHELL"));
		sleep(1);
	}
	
	return 0;
}

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

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

相关文章

OceanBase 的写盘与传统数据库有什么不同?

背景 在数据库开发过程中&#xff0c;“写盘”是一项核心操作&#xff0c;即将内存中暂存的数据安全地转储到磁盘上。在诸如MySQL这样的传统数据库管理系统中&#xff0c;写盘主要有以下几步&#xff1a;首先将数据写入缓存池&#xff1b;其次&#xff0c;为了确保数据的完整性…

【Qt】控件——Qt输入类控件、常见的输入类控件、输入类控件的使用、Line Edit、Text Edit、Combo Box、Spin Box

文章目录 Qt5. Qt显示类控件Line EditText EditCombo BoxSpin BoxQDateTimeEditDialSlider Qt 5. Qt显示类控件 Line Edit QLineEdit 用于表示单行输入框。可以输入一段文本&#xff0c;但是不能换行。 属性说明text输入框中的文本inputMask输入内容格式约束maxLength最大长度…

【HAD】Half-Truth: A Partially Fake Audio Detection Dataset

文章目录 Half-Truth: A Partially Fake Audio Detection Dataset背景key points研究数据集设计评价指标实验基线:utterance-level分类(话语级)基线:segment-level分类(片段级)Half-Truth: A Partially Fake Audio Detection Dataset 会议/期刊:Interspeech 2021 CCF-C…

哈佛医学生一个月吃720个鸡蛋,结果发现......

你们听说过吃鸡蛋还能降低胆固醇的操作吗&#xff1f; 前段时间&#xff0c;哈佛医学院的学生尼克诺尔维茨&#xff08;Nick Norwitz&#xff09;就做了这样一个实验&#xff0c;得出的结果让大家震惊&#xff01; 许多人认为狂吃鸡蛋不会有好处&#xff0c;因为这会摄入大量胆…

FFT过程中自动补零,补零部分FFT结果不为零

在 FFT&#xff08;快速傅里叶变换&#xff09; 中&#xff0c;补零&#xff08;Zero Padding&#xff09;是为了使信号的点数符合 2 的幂次方&#xff0c;以提高 FFT 的计算效率。然而&#xff0c;即使你对信号进行了补零&#xff0c;FFT 计算后在补零部分可能会得到复数结果不…

<项目代码>YOLOv8工具识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

数字化营销助企业在生态平台实现内卷突围

在当今数字化时代&#xff0c;企业竞争激烈&#xff0c;内卷化严重。而数字化生态平台建设与数字化营销为企业带来了新机遇。 数字化生态平台意义重大。它能整合企业内外资源&#xff0c;提高运营效率。打破地域限制&#xff0c;拓展市场&#xff0c;吸引更多客户。还能为企业创…

TCP——Socket

应用进程只借助Socket API发和收但是不关心他是怎么进行传和收的 数据结构 图示Socket连接 捆绑属于隐式捆绑

如何快速解决谷歌网站页面收录难题?

在外贸网站的运营中&#xff0c;页面无法被谷歌收录是一个常见的困扰。即便你的内容再优秀&#xff0c;如果搜索引擎的爬虫无法抓取到你的页面&#xff0c;那一切努力都将白费。而GPC爬虫池服务可以帮助你快速解决网站页面的收录问题。它通过千万级的爬虫池资源&#xff0c;强力…

【信创】银河麒麟安装程序记录

银河麒麟安装程序记录 Step1 添加外网yum源Step2 安装软件安装MySQL&#xff08;8.0.32&#xff09;安装JDK安装jdk17安装Nginx&#xff08;1.21.5&#xff09;安装Redis&#xff08;4.0.14&#xff09;安装Emqx&#xff08;4.4.19&#xff09;安装RocketMQ&#xff08;5.1.4&a…

基于STM32的多功能MP3播放器

基于STM32的多功能MP3播放器 基于STM32的多功能MP3播放器一、项目背景与意义二、系统设计与实现2.1 硬件设计2.2 软件设计2.3 系统调试 三、功能实现与展望四、结论五、附录 基于STM32的多功能MP3播放器 在数字化时代&#xff0c;多功能播放器已成为我们生活中不可或缺的一部分…

Maven骨灰级教程:从小白到高手的终极指南(一)

目录 1. Maven的概念 1.1 什么是Maven 1.2 什么是依赖管理 1.3 什么是项目构建 1.4 Maven的应用场景 1.5 为什么使用Maven 1.6 Maven模型 2.初识Maven 2.1 Maven安装 2.1.1 安装准备 2.1.2 Maven安装目录分析 2.1.3 Maven的环境变量 2.2 Maven的第一个项目 2.2.1…

学习threejs,THREE.ConvexGeometry凸包高级几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.ConvexGeometry凸包高…

Http模块总体设计

在前面的文章中&#xff0c;我们已经实现了一个主从Reactor模型的服务器类&#xff0c;但是由于他只是一个服务器&#xff0c;不涉及任何业务以及协议的处理&#xff0c;那么为了方便用户使用&#xff0c;我们可以预先设置好协议的支持&#xff0c;只需要让用户进行业务处理就行…

【Qt】Windows下Qt连接DM数据库

环境信息&#xff1a;W11 Qt5.12及以上 dm8 QODBC达梦 Windows环境创建ODBC数据源 使用 ODBC 方法访问 DM 数据库服务器之前&#xff0c;必须先配置 ODBC 数据源 在控制面板Windows工具中显示ODBC数据源管理器 ODBC数据源管理器标签 用户 DSN&#xff1a;添加、删除或配置本…

jmeter中发送post请求遇到的问题

用jmeter发送post请求&#xff0c;把请求参数放在Body Data处&#xff0c;参数都写得正确&#xff0c;但没想到结果每次都报错&#xff0c;直接响应结果乱七八糟&#xff0c;改成用Parameters,反而不乱报错了。 上图 请求里如下 另外一些请求也是这样 这个响应结果也是错误的…

⌈ 传知代码 ⌋ 农作物病害分类(Web端实现)

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

国家超算互联网测评——用一分钱的显卡做大模型微调

大家好&#xff0c;我是刘明&#xff0c;明志科技创始人&#xff0c;华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享&#xff0c;如果你也喜欢我的文章&#xff0c;就点个关注吧 背景信息 算力、算法、数据&#xff0c;…

Vulhub Rickdiculously Easy 靶机详解

项目地址 https://download.vulnhub.com/rickdiculouslyeasy/RickdiculouslyEasy.zip实验过程 将下载好的靶机导入到VMware中&#xff0c;设置网络模式为NAT模式&#xff0c;然后开启靶机虚拟机 使用nmap进行主机发现&#xff0c;获取靶机IP地址 nmap 192.168.47.1-254根据对…

1971. 寻找图中是否存在路径

有一个具有 n 个顶点的 双向 图&#xff0c;其中每个顶点标记从 0 到 n - 1&#xff08;包含 0 和 n - 1&#xff09;。图中的边用一个二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接&#x…