【Linux】进程基础概念【下篇】

这篇具有很好参考价值的文章主要介绍了【Linux】进程基础概念【下篇】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 基本概念

2. 常见环境变量

常见环境变量指令

(1. PATH

(2. HOME

(3. SHELL

3.环境变量的组织形式

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

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

(3)命令行参数


【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

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执行

 【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

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

 我们查看环境变量:【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

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

 【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

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

(2. HOME

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

【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

跟登录用户有关系。 

(3. SHELL

 【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

3.环境变量的组织形式

【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

没错环境变量是以指针数组的形式存储。每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\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我们要查看的环境变量名。 

【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

我们实验下面代码:

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

【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

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

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

【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

普通变量定义:

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

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

【Linux】进程基础概念【下篇】,Linux,linux,运维,服务器

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

  

结语

   本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论,如果给小伙伴带来一些收获请留下你的小赞,你的点赞和关注将会成为博主创作的动力文章来源地址https://www.toymoban.com/news/detail-696222.html

到了这里,关于【Linux】进程基础概念【下篇】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 运维 | 查看 Linux 服务器 IP 地址

    大多数在操作 Linux 系统时,我们经常需要知道服务器的 IP 比便于后续的一系列操作,这时候有快速查看主机 IP 的命令行操作,能够有效的帮助我们 本章节主要记录一些常用查看服务器 IP 的命令,希望对大家有所帮助。 查看 Linux 服务器的 IP 地址的命令大体上有以下几种。

    2024年04月27日
    浏览(52)
  • 【运维】Linux 跨服务器复制文件文件夹

    如果是云服务 建议用内网ip scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来

    2024年02月08日
    浏览(46)
  • 【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

    本文思维导图概述的主要内容: 1.1 什么是 crontab Crontab 是一个在 Unix 和 Linux 操作系统上 用于定时执行任务 的工具。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab 是 cron table 的缩写, cron 指的是 Unix 系统中的一个后台进程,它

    2024年02月08日
    浏览(62)
  • linux并发服务器 —— 多进程并发(四)

    程序是包含一系列信息的文件,描述了如何在运行时创建一个进程; 进程是正在运行的程序的实例,可以用一个程序来创建多个进程; 用户内存空间包含程序代码以及代码所使用的变量,内核数据结构用于维护进程状态信息; 进程控制块(PCB):维护进程相关的信息,tas

    2024年02月11日
    浏览(40)
  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(48)
  • Linux服务器上查询进程 ps aux

    在Linux服务器上查询进程,有以下几种方法: 使用ps命令。这个命令用于报告当前系统的进程状态。可以用以下方式使用ps命令来查看进程信息: ps aux:显示系统中所有进程的信息。 ps -e:显示所有进程的信息。 ps -f:显示进程的所有信息。 ps -l:以长格式显示进程信息。

    2024年02月05日
    浏览(44)
  • Linux服务器中查看进程的四种方法

    1. 使用 ps aux 命令来查看,能以简单列表的形式显示出进程信息 ps aux 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序. ps 命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进

    2024年02月02日
    浏览(30)
  • 基于linux下的高并发服务器开发(第二章)- 2.7 进程退出、孤儿进程、僵尸进程

    ◼ 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程 (Orphan Process)。 ◼ 每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地 wait() 它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束 了其生

    2024年02月16日
    浏览(40)
  • Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月04日
    浏览(54)
  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包