【Linux】进程概念,轻松入门【下篇】

news2024/11/26 16:46:08

目录

1. 基本概念

2. 常见环境变量

常见环境变量指令

(1. PATH

(2. HOME

(3. SHELL

3.环境变量的组织形式

(1)通过代码如何获取环境变量

(2)普通变量与环境变量的区别

(3)命令行参数


1. 基本概念

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

2. 常见环境变量

PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash。

常见环境变量指令

1. echo: 显示某个环境变量值
2. export: 设置一个新的环境变量
3. env: 显示所有环境变量
4. unset: 清除环境变量
5. set: 显示本地定义的shell变量和环境变量

查看方法:

echo   $变量名 

(1. PATH

1. 创建hello.c文件

 我们打印一句hello!

2. 对比./hello执行和之间hello执行

 

3. 为什么有些指令可以直接执行,不需要带路径(如访问文件夹),而我们的二进制程序需要带路径才能执行?

 我们查看环境变量:

 4. 将我们的程序所在路径加入环境变量PATH当中, export PATH=$PATH:hello程序所在路径

 

但这种修改的环境变量仅此次登录有效。 

(2. HOME

 这个比较简单,查看环境变量,表示的就是自己的根目录

跟登录用户有关系。 

(3. SHELL

 

3.环境变量的组织形式

没错环境变量是以指针数组的形式存储。每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串 

(1)通过代码如何获取环境变量

1. 命令行第三个参数
#include <stdio.h>
int main(int argc, char *argv[], char *env[]) //先不管前面2个参数,最后一个就是环境变量
           // 的指针数组,参数一般都是由其父进程传递,追跟溯源就是bash传递                                  
{
 int i = 0;
 for(; env[i]; i++){
 printf("%s\n", env[i]);
 }
 return 0;
}
2.通过第三方变量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 声明

3. (常用)通过接口函数

getenv()

我们来问问man ,也就是我们输入getenv我们要查看的环境变量名。 

我们实验下面代码:

    #include <iostream>
  2 #include <unistd.h>
  3 using namespace std;
  4 
  5 int main()
  6 {
  7   cout << "begin-------------" << endl;
  8   cout << "打印环境变量day:" << getenv("day") << endl;
  9   cout << "当前PID:"<< getpid() << " 父进程PID:"<< getppid() << endl;
 10   cout << "end---------------" << endl;
 11   while (1)
 12   {
 13   }
 14   return 0;
 15 } 

环境变量传递方式:  bash -> 父进程A -> 子进程B

(2)普通变量与环境变量的区别

普通变量定义:

可见普通变量,我们直接就可以定义,但毕竟不是环境变量,无法查到,无法让子进程继承。当然升级为环境变量也很简单。

(3)命令行参数

我们回顾前面的代码,main函数中的前几个参数是干什么的?

#include <stdio.h>
int main(int argc, char *argv[], char *env[])                                  
{
 return 0;
}

我们通过他们参数类型来简单测试一下

    1 #include <iostream>
    2 using namespace std;                                        
    3                     
    4 int main(int argc, char *argv[], char *env[])
    5 {                                            
    6   cout << "argv:"<< endl;                    
    7    for (int i =1; i < argc; i++)    
    8    {                                
    9      cout << argv[i] << endl;     
         }                                
   11   return 0;                         
   12 }     

意义: 可以通过指令,传入不同的参数来选择不同的功能,这一点我们输入指令时经常遇见。

  

结语

   本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论,如果给小伙伴带来一些收获请留下你的小赞,你的点赞和关注将会成为博主创作的动力

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

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

相关文章

第十二届中国PMO大会在京成功召开

8月12-13日&#xff0c;由PMO评论主办&#xff0c;以“拥抱变革 展现PMO力量”为主题的第十二届中国PMO大会在京成功召开。全国项目管理标准化技术委员会俞彪秘书长、《项目管理技术》杂志张星明主编莅临大会并致开幕词&#xff0c;53位来自知名企业的PMO实践精英及业内专家做了…

【某大型攻防演练中 QQ 远程代码执行复现】

目录 前言 漏洞概述 复现过程 修复方式 前言 在最近某全国大型攻防演练中&#xff0c;接近尾声爆出了QQ 0day&#xff0c;攻击者使用QQ版本<9.7.13&#xff0c;存在远程命令执行漏洞&#xff0c;对众多靶标系统进行攻击。漏洞爆出后&#xff0c;就做过一次复现。最近活动…

EXSI技术--SAN组网

(1).SAN概述 存储区域网络(Storage Area Network,SAN)采用网状通道技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。 作为一种专门用于实现存储系统互连的高速网络技术,SAN(存储区域网络)克服了NAS(网络连接存储)中存储吞吐量受底层网络介质限…

【高阶数据结构】哈希表详解

文章目录 前言1. 哈希的概念2. 哈希冲突3. 哈希函数3.1 直接定址法3.2 除留余数法--(常用)3.3 平方取中法--(了解)3.4 折叠法--(了解)3.5 随机数法--(了解)3.6 数学分析法--(了解) 4. 哈希冲突的解决方法及不同方法对应的哈希表实现4.1 闭散列&#xff08;开放定址法&#xff0…

解决win10 wsl子系统安装的ubuntu环境中lsof,netstat命令查看端口没有任何输出的问题

最近有个以前的ssm项目需要在新电脑上运行测试一下&#xff0c;发现需要redis环境&#xff0c;看了官网说&#xff1a;有两种选择&#xff1a; 1. 要么在虚拟机比如vmware安装linux基础环境&#xff0c;然后再安装redis 2. 要么可以利用win10的wsl linux子系统安装ubuntu&…

LNMT与动静分离 (四十八)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、LNMT 二、Nginx高级配置 2.1 location 2.2 rewirte 2.2.1 应用场景 2.2.2 书写位置 三、动静分离 总结 前言 LNMT是一个高级神经机器翻译系统&#xff0c;它使…

【数据结构】队列篇| 超清晰图解和详解:循环队列模拟、用栈实现队列、用队列实现栈

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; 是瑶瑶子啦每日一言&#x1f33c;: 每一个不曾起舞的日子&#xff0c;都是对生命的辜负。——尼采 目录 一、 模拟实现循环队列二、用栈实现队列⭐三、225. 用队列实现栈 一、…

什么是异业联盟呢?异业联盟模式解析

今日给大家分享个新的模式&#xff0c;主要是针对平台要整合实体联盟商家&#xff0c;打造线上异业联盟&#xff0c;为帮助商家及平台引流用户。也让用户获得更多优惠的模式——异业联盟结合联盟卡解决方案。 众所周知&#xff0c;商家联盟 ”是一种着力于本地生活的商业模式&…

pdf怎么压缩到1m以内?分享3个pdf压缩技巧

PDF是我们常用的文件类型&#xff0c;它旨在保留文档原样式和格式&#xff0c;因此通常情况下要比其他文件格式大一些&#xff0c;特别是那些包含了大量图片的PDF文件&#xff0c;文件大小都比较大&#xff0c;给我们的存储和传输带来了困难。 针对过大的PDF文件&#xff0c;想…

STM32循迹小车系列教程(三)—— 使用灰度传感器循迹

本章节主要讲解如何获取灰度传感器值以及如何使用灰度传感器循迹 灰度传感器简介 灰度传感器如图 1 所示&#xff1a; 灰度传感器 使用一对抗干扰较强的光电传感器&#xff0c;其中发射管的光源采用高亮白色聚光 LED&#xff0c;发射管端发出的光线通过不同环境背景的反射之…

C语言练习6(巩固提升)

C语言练习6 编程题 前言 “宝剑锋从磨砺出&#xff0c;梅花香自苦寒来。”人类的美好理想&#xff0c;都不可能唾手可得&#xff0c;都离不开筚路蓝缕、手胼足胝的艰苦奋斗。我们的国家&#xff0c;我们的民族&#xff0c;从积贫积弱一步一步走到今天的发展繁荣&#xff0c;靠的…

国产当自强!深圳触觉智能「全国产化主板」大盘点(二)

上期我们给大家盘点了RK3568国产主板&#xff0c;本期为大家盘点的是深圳触觉智能RK3566系列产品&#xff0c;话不多说&#xff0c;上干货&#xff01; RK3566系列 深圳触觉智能 IDO-SOM3566 核心板 IDO-SOM3566-V1采用 Rockchip 新一代 64 位处理器 RK3566&#xff08;Q…

pyqt5-快捷键QShortcut

import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *""" 下面示例揭示了&#xff0c;当关键字绑定的控件出现的时候&#xff0c;快捷键才管用&#xff0c; 绑定的控件没有出现的时候快捷键无效 """…

正中优配:多只内房股沦为仙股 投资者信心何时恢复?

8月25日&#xff0c;受房地产利好方针推进&#xff0c;房地产板块直线大幅拉升&#xff0c;其中在港交所上市的富力地产大涨超过5%&#xff0c;股价重回1港元/股上方&#xff0c;然后暂时摆脱了“仙股”的称号。 实践上&#xff0c;近期&#xff0c;碧桂园、融创我国、SOHO我国…

智慧矿山IT智能运维自动化解决方案

矿山企业是国民经济中的重要组成部分&#xff0c;其资源开发和产业链条中涉及的环节与过程非常繁琐和复杂。随着我国矿山企业规模逐年扩大&#xff0c;为了提高其生产效率和降低其生产成本&#xff0c;信息化、数字化建设成为当下矿山企业发展的重要趋势。 第1章 智慧矿山的建…

Mac性能优化:深入了解WindowServer及其影响

文章目录 Mac性能优化:深入了解WindowServer及其影响WindowServer是什么?WindowServer为什么会占用那么多CPU?如何检查WindowServer是否使用了过多的CPU使用率?如何减少WindowServer的CPU使用率?Mac性能优化:深入了解WindowServer及其影响 大家好!今天我们来聊聊Mac上的…

14-redis

一 Redis概述 1 为什么要用NoSQL 单机Mysql的美好年代 在90年代&#xff0c;一个网站的访问量一般都不大&#xff0c;用单个数据库完全可以 轻松应付。在那个时候&#xff0c;更多的都是静态网页&#xff0c;动态交互类型的网站不多。 遇到问题&#xff1a; 随着用户数的增长…

第六章:数据结构与算法-part3:数据结构算法提升

文章目录 一、排序算法1.1 插入排序1、直接插入排序2、折半插入排序3、希尔排序 1.2、交换排序法1、起泡排序2、快速排序 1.3 选择类排序1、简单选择排序 二、业务逻辑算法设计2.1 基本概念和术语2.2 静态查找表2.3、有序表的查找 一、排序算法 排序是数据处理过程中经常使用的…

1990-2020年中国投入产出表

1990-2020年中国投入产出表 1、时间&#xff1a;1990-2020年 2、用途&#xff1a; 投入产出表提供了中国各个经济部门的投入和产出的详细信息。这些数据通常以货物和服务的形式表示&#xff0c;可以显示每个部门如何接收和分配资源&#xff0c;以及他们的经济互动情况。 可…

万级数据优化EasyExcel+mybatis流式查询导出封装

文章目录 前言.千万级数据优化一. 直接上流式查询封装工具代码二. 传统分页导出查询三. 流式查询概念游标查询 前言.千万级数据优化 我们不妨先给大家讲一个概念&#xff0c;利用此概念我们正好给大家介绍一个数据库优化的小技巧&#xff1a; 需求如下&#xff1a;将一个地市表…