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

目录

一、命令行参数

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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Multisim电子配料秤电路设计(含仿真和报告)

【全套资料.zip】电子配料秤电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 电子配料秤仿真功能: 准确测量物体重量&#xff0c;精确度0.1Kg使用两位数码管显示重量信息 使用拨码…

深度学习 基本函数01

np.dot 是 NumPy 库中的一个函数&#xff0c;用于计算两个数组的点积&#xff08;也称为内积或数量积&#xff09;。点积是两个向量的对应元素乘积之和。 np.random.normal 是 NumPy 库中的一个函数&#xff0c;用于生成符合正态分布&#xff08;也称为高斯分布&#xff09;的…

jmeter用csv data set config做参数化1

在jmeter中&#xff0c;csv data set config的作用非常强大&#xff0c;用它来做批量测试和参数化非常好用。 csv data set config的常用配置项如下&#xff1a; Variable Names处&#xff0c;写上源文件中的参数名&#xff0c;用于后续接口发送请求时引用 Ignore first line…

Mybatis多对一查询的配置及两种方法的使用示例对比以及Mybatis一对多查询两种方法使用示例及对比

一、Mybatis多对一查询的配置及两种方法的使用示例对比 为了试验Mybatis多对一的查询&#xff0c;我们先在数据库中建两个表&#xff0c;一个城市表&#xff0c;一个市区表&#xff0c;一个城市有多个区是一个一对多的关系&#xff1b;多个区对应一个城市是一个多对一的关系。建…

spring源码拓展点3之addBeanPostProcesser

概述 在refresh方法中的prepareBeanFactory方法中&#xff0c;有一个拓展点&#xff1a;addBeanPostProcessor。即通过注入Aware对象从而将容器中的某些值设置到某个bean中。 beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));aware接口调用 …

ThinkPad T480拆机屏幕改装:便携式显示器DIY指南

ThinkPad T480拆机屏幕改装&#xff1a;便携式显示器DIY指南 本文记录了将旧笔记本电脑 T480 拆机屏幕改装为便携式显示器的全过程。作者在决定升级设备后&#xff0c;选择通过 DIY 方式利用原有的屏幕资源。文章详细介绍了屏幕驱动板的安装、螺丝孔的剪裁、排线连接及固定的步…

[DB] NSM

Database Workloads&#xff08;数据库工作负载&#xff09; 数据库工作负载指的是数据库在执行不同类型任务时所需的资源和计算方式&#xff0c;主要包括以下几种类型&#xff1a; 1. On-Line Transaction Processing (OLTP) 中文&#xff1a;联机事务处理解释&#xff1a;…

hive初体验

1.首先&#xff0c;确保启动了Metastore服务。 runjar就是metastore进程 2.进入hive客户端: 命令:hive 3.操作:没有指定数据库时默认在default 一:创建表:CREATE TABLE test(id INT, name STRING, gender STRING); 完成,show tables看一下 也可以通过hdfs文件系统查看,默认路径…

go多线程

1.仅加go 在一个golang编写的程序&#xff0c;主函数运行完毕后&#xff0c;程序就结束了 package mainimport ("fmt""time" )func main() {// 如果这样写go 要加在上面的函数&#xff0c;因为如果只单独加在下面的函数或者都加上&#xff0c;程序就会直接…

Leetcode 柱状图中最大的矩形

h 是右边界&#xff0c;连续多个高度递增的柱子&#xff0c;如果遇到下一个 h < 栈顶元素(是最大的元素&#xff0c;单调递增栈)&#xff0c;那么会不断出栈来更新计算最大面积。 并非是一次性计算出最大面积的&#xff0c;很重要的一点是while (!stack.isEmpty()这一部分的…

Vivado自定义IP修改顶层后Port and Interface不更新解决方案

问题描述 在整个项目工程中&#xff0c;对自定义IP进行一个比较大的改动&#xff0c;新增了不少端口(这里具体的就是bram的读写端口)&#xff0c;修改是在block design中右击IP编辑在IP编辑工程中进行的。 在修改完所有代码后&#xff08;顶层新增了需要新加的输入输出端口&…

【计算机网络 - 基础问题】每日 3 题(四十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

字节流写入文件

一、创建输出流对象表示的文件三种方式 方法一&#xff1a; FileOutputStream fos new FileOutputStream("fos.txt",true);//最简便方法二&#xff1a; FileOutputStream fos new FileOutputStream(new File("fos.txt"));方法三&#xff1b; File f ne…

HCIP-HarmonyOS Application Developer 习题(十四)

&#xff08;多选&#xff09;1、HarmonyOs为应用提供丰富的Al(Artificial Intelligence)能力&#xff0c;支持开箱即用。下列哪些是它拥有的AI能力? A、通用文字识别 B、词性标注 C、实体识别 D、语音播报 答案&#xff1a;ABCD 分析&#xff1a; AI能力简介二维码生成根据开…

软考高级系统分析师,快背,都是精华知识点!

19、需求变更控制 需求变更控制过程&#xff1a; &#xff08;1&#xff09;变更申请。应记录变更的提出人、日期、申请变更的内容等信息。 &#xff08;2&#xff09;变更评估。对变更的影响范围、严重程度、经济和技术可行性进行系统分析。 &#xff08;3&#xff09;变更…

qt/c++中成员函数返回成员变量并且可以赋值

#创作灵感 最近在做仪表项目&#xff0c;由于客户提供的仪表故障指示灯只有10个固定位置&#xff0c;而故障指示灯却有80多个。为了解决这个问题&#xff0c;进过我的设计&#xff0c;项目中需要返回类的成员变量。并且还可以赋值给它。于是就产生了下面的代码。 class Foo { …

基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)

【全套资料.zip】三极管B放大系数放大倍数测量电路电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.用三个数码管显示B的大小&#xff0c;分别显示个位、十位和百位。 2.显示范围…

FineReport 分页

按组分页 按组分页就是让数据按组来进行分页显示&#xff0c;每个组的数据占据一页。 例如报表原本是按照纸张大小进行分页的&#xff0c;现在希望能够按照货主地区进行分页&#xff0c;一个地区的数据显示在同一个页面当中。 在每组数据前设置「行前分页」或者在每组数据后…

健身房管理系统设计与实现(源码+定制+讲解)健身房预约系统开发、健身房会员管理平台、健身房设备管理系统、健身房系统功能优化

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

如实例布局图,如何做到两栏四列,margin间距超出了两段不对齐如何处理

使用 CSS Grid 实现两栏四列布局&#xff1a; <!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <sty…