Linux进程概念—环境变量

Linux进程概念—环境变量

  • 1.孤儿进程
  • 2.环境变量
    • 2.1常见环境变量
    • 2.2查看环境变量方法
    • 2.3在环境变量中添加
    • 2.4和环境变量相关的命令
    • 2.5环境变量的组织方式
    • 2.6命令行参数

🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Linux的学习】
📝📝本篇内容:孤儿进程;环境变量
⬆⬆⬆⬆上一篇:string类(下)
💖💖作者简介:轩情吖,请多多指教(> •̀֊•́ ) ̖́-

1.孤儿进程

父进程退出,子进程会被OS自动领养(通过1号进程成为新的父进程),如果不领养会在后续子进程退出时,无人回收了
在这里插入图片描述

写一份代码如上
在这里插入图片描述
在makefile文件当中可以进行简写,$ @表示的是目标文件,也就是practice,$^表示的是依赖文件,也就是practice.c
在这里插入图片描述
在杀掉父进程后,子进程的父进程变成了1号进程

2.环境变量

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数
环境变量在系统当中通常具有全局特性

2.1常见环境变量

PATH:指定命令的搜索路径
HOME:指定用户的主工作目录
SHELL:当前shell,它的值通常为/bin/bash

2.2查看环境变量方法

echo $NAME//NAME:你的环境变量名称
在这里插入图片描述

2.3在环境变量中添加

export PATH=$PATH:xxx
在这里插入图片描述
可以看见,把当前路径添加到PATH中后,可以直接运行practice程序,本质上添加到环境变量中后,当使用practice时,系统会去PATH中的路径下找对应的practice,并且因为有全局特性1,不在需要./

2.4和环境变量相关的命令

①echo:显示某个环境变量值
②export:设置一个新的环境变量
在这里插入图片描述
val还有其他的一些特性,具体的后面再讲
③env:显示所有的环境变量
在这里插入图片描述
④unset:清除环境变量
在这里插入图片描述
⑤set:显示本地定义的shell变量和环境变量
这个也有所涉及到后面的知识,后面再讲

2.5环境变量的组织方式

不知道大家有没有见过main函数的参数
int main(int argc,char* argv[],char* envp[])
每个程序都会收到一张环境变量表,环境变量表就是一个字符指针数组,每个指针指向一个以‘\0’结尾的环境字符串,其中envp就是一个字符指针数组,就是环境变量表
在这里插入图片描述
在这里插入图片描述
可以看到,把环境变量全部打印出来
还有一个方法是使用environ
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以说在使用时要用extern声明
在Linux中,把可执行程序,拷贝到系统默认路径下,让我们直接访问的方式相当于Linux下软件的安装。
在这里插入图片描述

也可以使用getenv系统调用来获取环境变量
在这里插入图片描述
环境变量本质就是一个内存级的一张表,这张表由用户登录系统的时候,进行给特定用户形成属于自己的环境变量表
每个环境变量都有自己的特定的应用场景
每一个元素都是kv的(有自己的名字和内容)
环境变量对应的数据从系统的相关配置文件中读取进来的(.bash_profile .bashrc)
环境变量通常是具有全局属性的,可以被子进程继承下去的
如果没有export,命令行定义的就是本地变量,只在shell内部有效,不会被子进程继承,使用export的目的是为了把变量放进环境变量表中,但是不管本地变量还是环境变量都被shell记录了下来
在这里插入图片描述
在这里插入图片描述
可以看到在命令行定义的变量使用env查看时并没有显示,但是使用export声明后,就能查看到在环境变量表中

2.6命令行参数

在这里插入图片描述

在这里插入图片描述
argv本质上也是一个表,由bash制作这个表,实际上就是为了方便使用命令行参数
举一个栗子来更好地理解它:
在这里插入图片描述
在这里插入图片描述
其本质上命令行上输入的就是一串字符串,一个是可执行程序,后面的就是参数选项,平常我们使用的命令以及命令选项都是这样实现的。

🌸🌸环境变量的知识大概就讲到这里啦,博主后续会继续更新更多Linux的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪

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

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

相关文章

五分钟带你了解 计算机操作系统——进程与线程(万字详解·图文)

进程线程可以说是操作系统基础,看过很多关于这方面知识的文章都是纯理论讲述,我准备用图解的形式带你学习和掌握进程、线程。文字力求简单明了,对于复杂概念做到一个概念一张图解,在操作系统课程的学习中,很多人对进程…

HTTP/HTTPS协议认识

写在前面 这个博客我们要要讨论的是协议,主要是应用层.今天我们将正式认识HTTP和HTTPS,也要认识序列化和反序列化,内容比较多,但是不难 再谈协议 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层,我们要完成下面三个步骤. sock的使用 定制…

JAVA Session会话 Thymeleaf - 视图模板技术配置步骤

JAVAWebSession会话会话跟踪技术session保存作用域Thymeleaf - 视图模板技术配置过程Session会话 HTTP是无状态的:服务器无法区分这两个请求是同一个客户端发过来的,还是不同的客户端发过来的 现实问题:第一次请求是添加商品到购物车&#x…

STM32外设-定时器详解

0. 概述 本文针对STM32F1系列,主要讲解了其中的8个定时器的原理和功能 1. 定时器分类 STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器基本定时器 TIM6 和 TIM7 是一个 16 位…

Html5版飞机大战游戏中(Boss战)制作

内容在“60行代码,制作飞机大战游戏”的基础上,继续追加入了Boss战的功能。 boss的血量默认设置为100了,可以二次开发调整……(^_^) 玩起来有一定难度哈。 试玩地址:点击试玩 实现功能 添加玩家飞机,并进行控制Boss能…

【AcWing刷题】蓝桥杯专题突破-广度优先搜索-bfs(11)

目录 写在前面: 题目:844. 走迷宫 - AcWing题库 题目描述: 输入格式: 输出格式: 输入样例: 输出样例: 解题思路: 代码: AC !!&#xff…

使用Docker 一键部署SpringBoot和SpringCloud项目

使用Docker 一键部署SpringBoot和SpringCloud项目 1. 准备工作2. 创建Dockerfile3. 创建Docker Compose文件4. 构建和运行Docker镜像5. 验证部署6. 总结Docker是一个非常流行的容器化技术,可以方便地将应用程序和服务打包成容器并运行在不同的环境中。在本篇博客中,我将向您展…

计算机组成原理|第四章(笔记)

目录第四章 存储器4.1 概述4.1.1 存储器分类4.1.2 存储器的层次结构4.2 主存储器4.2.1 概述4.2.2 半导体存储芯片简介4.2.3 随机存取存储器(RAM)4.2.4 只读存储器(ROM)4.2.5 存储器与CPU的连接4.2.6 存储器的校验4.2.7 提高访存速…

《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界

Chapter 1 亚稳态的世界 一、简介 同步系统中,数据和时钟有固定的因果关系(在同一时钟域(Clock Domains))中,只要数据和时钟满足建立时间和保持时间的要求,不会产生亚稳态(meastable) 静态时序分析(STA) 就是基于同步电路设计模型而出现的&am…

安全防御 --- 防火墙

防火墙 1、基础 (1)防御对象:授权用户;非授权用户 (2)含义: 防火墙是一种隔离(非授权用户所在区域间)并过滤(对受保护网络中的有害流量或数据包&#xff0…

GCC 编译器的主要组件和编译过程

主要组件: 分析器:分析器将源语言程序代码转换为汇编语言。因为要从一种格式转换为另一种格式(C到汇编),所以分析器需要知道目标机器的汇编语言。 汇编器:汇编器将汇编语言代码转换为CPU可以执行字节码。 …

网络层协议 IP

目录 IP协议 基本概念 协议头格式(重要) 分片了如何组装: 那么判断是否片偏移就是: 分片对UDP和TCP有影响吗? 总结 网段划分(重要) 下面有两个例子: 特殊的IP地址 …

这几个SQL语法的坑,你踩过吗

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

人工智能能否取代软硬件开发工程师

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 人工智能发展趋势 随着AI技术的不断发展,它正在改变我们的生活方式、商业模式和工作方式。人工智能技术的发展一直处于快速变化和持续创新的状态,以下…

免费镜像 ChatGPT 网站随你挑和分享一批可用的 API Keys

文章目录一、前言二、在线 ChatGPT三、分享一批 API Keys🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 随着科技的不断进步,人工智能在各个领域的应用越来越广泛。在这个过程中,人们需要不断更新知识和技能&#x…

文件包含漏洞学习笔记

1、为何会出现文件包含漏洞 相同内容或方法在多个页面显示或调用,文件包含漏洞又称为目录遍历漏洞或任意文件访问漏洞。分为本地文件包含(LFI:Local File Inclusion),远程文件包含(RFI:Remote …

Linux 多线程:多线程和多进程的对比

目录一、多进程优缺点二、多线程优缺点三、使用多执行流的场景在多任务处理中,我们既可以使用多进程,也可以使用多线程。但多进程和多线程并不是随意选择的,因为它们应对的场景不同,优缺点也不同。 一、多进程优缺点 多进程就是在…

Spring - Spring 注解相关面试题总结

文章目录01. Spring 配置方式有几种?02. Spring 如何实现基于xml的配置方式?03. Spring 如何实现基于注解的配置?04. Spring 如何基于注解配置bean的作用范围?05. Spring Component, Controller, Repository, Service 注解有何区别…

【数据结构】堆

文章目录前言堆的概念及结构堆初始化堆的判空堆的销毁插入数据删除数据堆的数据个数获取堆顶数据用数组创建堆对数组堆排序有关topk问题整体代码展示写在最后前言 &#x1f6a9;前面了解了树&#xff08;-> 传送门 <-&#xff09;的概念后&#xff0c;本章带大家来实现一…

手机验证发送及其验证(基于springboot+redis)保姆级

在Java开发中&#xff0c;发送手机验证码时需要考虑以下几个问题&#xff1a; 验证码的有效期&#xff1a;验证码应该有一定的有效期&#xff0c;一般设置为几分钟或者十几分钟。过期的验证码应该被认为是无效的&#xff0c;不能用于验证用户身份。手机号码格式的校验&#xf…