最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux環(huán)境變量和進(jìn)程地址空間介紹

 更新時(shí)間:2021年12月10日 16:37:39   作者:雨軒(爵丶跡)  
大家好,本篇文章主要講的是Linux環(huán)境變量和進(jìn)程地址空間介紹,感興趣的同學(xué)趕快來看一看,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

Linux環(huán)境變量和進(jìn)程地址空間

//查看進(jìn)程pid和父進(jìn)程
[dy@VM-12-10-centos jincheng_12_5]$ ps ajx | head -1 && ps axj | grep 3669470
   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
3669469 3669470 3669470 3669439 pts/0    3681645 S     1001   0:00 -bash
3669470 3681645 3681645 3669439 pts/0    3681645 R+    1001   0:00 ps axj
3669470 3681646 3681645 3669439 pts/0    3681645 R+    1001   0:00 grep --color=auto 3669470


//第1種           不需要加路徑就能運(yùn)行程序的方法
[dy@VM-12-10-centos jincheng_12_5]$ ll
total 28
-rw-rw-r-- 1 dy dy    73 Dec  5 16:46 Makefile
-rwxrwxr-x 1 dy dy 17432 Dec  5 16:47 proc
-rw-rw-r-- 1 dy dy    75 Dec  5 16:47 proc.c
[dy@VM-12-10-centos jincheng_12_5]$ sudo cp proc /usr/bin/                  
//將自己的可執(zhí)行程序添加到系統(tǒng)路徑下
[sudo] password for dy: 
[dy@VM-12-10-centos jincheng_12_5]$ proc //將自己的可執(zhí)行程序添加到系統(tǒng)路徑下,就可以不要加./路徑了
hello world!
[dy@VM-12-10-centos jincheng_12_5]$ ./proc
hello world!
[dy@VM-12-10-centos jincheng_12_5]$ sudo rm /usr/bin/proc //從系統(tǒng)路徑下刪除
[dy@VM-12-10-centos jincheng_12_5]$ proc
-bash: /usr/bin/proc: No such file or directory

//第二種
[dy@VM-12-10-centos jincheng_12_5]$ $PATH
-bash: /home/dy/.local/bin:/home/dy/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin: No such file or directory
[dy@VM-12-10-centos jincheng_12_5]$ pwd
/home/dy/jincheng_12_5
//將當(dāng)前路徑添加到環(huán)境變量PATH當(dāng)中
[dy@VM-12-10-centos jincheng_12_5]$ PATH=$PATH:/home/dy/jincheng_12_5
[dy@VM-12-10-centos jincheng_12_5]$ proc
hello world!

//只保存3000條命令
[dy@VM-12-10-centos jincheng_12_5]$ echo $HISTSIZE
3000
//顯示之前有多少條命令
[dy@VM-12-10-centos jincheng_12_5]$ history |wc -l
636
[dy@VM-12-10-centos jincheng_12_5]$ history
//將之前的命令全部輸出到顯示器上
   
//顯示所有環(huán)境變量
[dy@VM-12-10-centos jincheng_12_5]$ env
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:
LANG=en_US.utf8
HISTTIMEFORMAT=%F %T 
HOSTNAME=VM-12-10-centos
OLDPWD=/home/dy
USER=dy
PWD=/home/dy/jincheng_12_5
HOME=/home/dy
MAIL=/var/spool/mail/dy
SHELL=/bin/bash
TERM=xterm
SHLVL=1
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"
LOGNAME=dy
PATH=/home/dy/.local/bin:/home/dy/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dy/jincheng_12_5
HISTSIZE=3000
LESSOPEN=||/usr/bin/lesspipe.sh %s
_=/usr/bin/env


echo: 顯示某個(gè)環(huán)境變量值

export: 設(shè)置一個(gè)新的環(huán)境變量

[dy@VM-12-10-centos jincheng_12_5]$ ./proc  //本地變量沒有
I am a proc : pid:3700079 ppid:3669470
Segmentation fault (core dumped)
[dy@VM-12-10-centos jincheng_12_5]$ export MY_VAL
[dy@VM-12-10-centos jincheng_12_5]$ ./proc
I am a proc : pid:3700163 ppid:3669470
hello dy
/home/dy/.local/bin:/home/dy/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dy/jincheng_12_5
/home/dy
/bin/bash

env: 顯示所有環(huán)境變量

unset: 清除環(huán)境變量

env 環(huán)境變量

set: 顯示本地定義的shell變量和環(huán)境變量

//設(shè)置環(huán)境變量
[dy@VM-12-10-centos jincheng_12_5]$ hello=1234
//輸出環(huán)境變量 記得要加$符
[dy@VM-12-10-centos jincheng_12_5]$ echo $hello
1234
[dy@VM-12-10-centos jincheng_12_5]$ set | grep hello
hello=1234

在命令行上運(yùn)行的大部分的指令,它的父進(jìn)程都是bash,bash創(chuàng)建子進(jìn)程,子進(jìn)程執(zhí)行你的命令。

通過代碼獲取環(huán)境變量

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(int argc, char *argv[], char *env[])
{
        for(int i = 0; argv[i]; ++i)//為命令行參數(shù)做解釋
        //for(int i = 0; i < argc; ++i)
        {
            printf("argv[%d]:%s\n",i,argv[i]);
        }
        for(int i = 0; env[i]; ++i)//可以通過代碼獲取環(huán)境變量
        {
           printf("env[%d]:%s\n",i,env[i]);
        }
   return 0;
}

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-7v2pxCt8-1639035758639)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211208141656121.png)]

int x = atoi(argv[2]);
int y = atoi(argv[3]);
if(strcmp(argv[1],"-a") == 0)
{
    printf("%d + %d = %d\n",x,y,x+y);
}
else
{
    printf("%d - %d = %d\n",x,y,x-y);
}

在這里插入圖片描述

每個(gè)程序都會(huì)收到一張環(huán)境表,環(huán)境表是一個(gè)字符指針數(shù)組,每個(gè)指針指向一個(gè)以'\0'結(jié)尾的環(huán)境字符串

在這里插入圖片描述

也可以通過第三方變量environ獲取環(huán)境

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

在這里插入圖片描述

進(jìn)程地址空間

#include<stdio.h>
#include<unistd.h>
int g_val = 0;
int main()
{
   pid_t id = fork();
   if(id < 0)
   {
       perror("fork() fail\n");
   }
   else if(id == 0)
   {
       printf("I am a child:%d,%d,%p\n",getpid(),g_val,&g_val);
   }else
   {
       printf("I am a fatcher:%d,%d,%p\n",getppid(),g_val,&g_val);
   }
   return 0;
}

在這里插入圖片描述

通過運(yùn)行結(jié)果,我們看到兩個(gè)進(jìn)程的變量的值和地址是一樣的,這里沒有對(duì)代碼做任何更改,子進(jìn)程按照父進(jìn)程為模板,所以地址是一樣的。

我們稍微將代碼更改一下

#include<stdio.h>
#include<unistd.h>
int g_val;
int main()
{
   pid_t id = fork();
   if(id < 0)
   {
       perror("fork() fail");
   }
   else if(id == 0)
   {
       g_val = 100;
       printf("I am a child:%d,%d,%p\n",getpid(),g_val,&g_val);
   }else
   {
       sleep(3);
       printf("I am a fatcher:%d,%d,%p\n",getppid(),g_val,&g_val);
   }
   return 0;
}

在這里插入圖片描述

此時(shí)我們發(fā)現(xiàn),變量的值已經(jīng)更改了,父進(jìn)程為0,子進(jìn)程為100,但是變量的地址仍然是一樣的。

通過這個(gè)運(yùn)行結(jié)果,我們可以得知以下幾點(diǎn)。

兩個(gè)進(jìn)程的變量的值不一樣,所以父子進(jìn)程的變量絕對(duì)不是同一個(gè)變量地址值一樣,絕對(duì)不是物理地址?。?!我們看到的地址,全部都是虛擬地址!??!真實(shí)的物理地址,用戶是看不到的,由OS統(tǒng)一管理(OS負(fù)責(zé)將虛擬地址–》物理地址)代碼是共享的,而數(shù)據(jù)各自私有一份(寫時(shí)拷貝)

關(guān)于為什么是虛擬地址,而不是物理地址?

進(jìn)程地址空間是什么?

進(jìn)程地址空間:是看待內(nèi)存的方式,抽象出來的一個(gè)概念,內(nèi)核struct mm struct,這樣的每個(gè)進(jìn)程,都認(rèn)為自己獨(dú)占系統(tǒng)內(nèi)存資源(你認(rèn)為你老爸的家產(chǎn)是你一個(gè)人的)區(qū)域劃分:地址空間為線性,被劃分成一個(gè)一個(gè)的區(qū)域,[start,end]虛擬地址:在[start, end]之間的各個(gè)地址叫做虛擬地址

在這里插入圖片描述

虛擬地址到物理地址的一個(gè)映射

在這里插入圖片描述

為什么要存在進(jìn)程地址空間?

保護(hù)物理內(nèi)存,不收到任何進(jìn)程內(nèi)的地址的直接訪問,方便進(jìn)行合法性檢驗(yàn)將內(nèi)存管理和進(jìn)程管理進(jìn)行解耦讓每個(gè)進(jìn)程,以同樣的方式,來看待代碼和數(shù)據(jù)

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-wu0C4V57-1639035758649)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211209150456785.png)]

以后我們可以直接說出進(jìn)程和程序的區(qū)別。

在這里插入圖片描述

到此這篇關(guān)于Linux環(huán)境變量和進(jìn)程地址空間介紹的文章就介紹到這了,更多相關(guān)Linux環(huán)境變量和進(jìn)程空間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析centos 7 自帶的 php 5.4升級(jí)為 5.6的方法

    淺析centos 7 自帶的 php 5.4升級(jí)為 5.6的方法

    這篇文章主要介紹了centos 7 自帶的 php 5.4升級(jí)為 5.6的方法,需要的朋友可以參考下
    2018-12-12
  • 在CentOS搭建Git服務(wù)器的詳細(xì)步驟

    在CentOS搭建Git服務(wù)器的詳細(xì)步驟

    本篇文章主要介紹了在CentOS搭建Git服務(wù)器的詳細(xì)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • linux掛載本地yum源問題

    linux掛載本地yum源問題

    這篇文章主要介紹了linux掛載本地yum源問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • gdb調(diào)試中設(shè)置監(jiān)控點(diǎn)watch,rwatch,awatch的區(qū)別及說明

    gdb調(diào)試中設(shè)置監(jiān)控點(diǎn)watch,rwatch,awatch的區(qū)別及說明

    這篇文章主要介紹了gdb調(diào)試中設(shè)置監(jiān)控點(diǎn)watch,rwatch,awatch的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Linux部署jar包過程

    Linux部署jar包過程

    文章介紹了在Linux系統(tǒng)上部署Java(jar)包時(shí)需要注意的幾個(gè)關(guān)鍵點(diǎn),包括統(tǒng)一JDK版本、添加打包插件、修改數(shù)據(jù)庫密碼以及正確執(zhí)行jar包的方法
    2025-02-02
  • Apache的Rewrite設(shè)置多域名301跳轉(zhuǎn)到主域名的方法

    Apache的Rewrite設(shè)置多域名301跳轉(zhuǎn)到主域名的方法

    這篇文章主要介紹了Apache的Rewrite設(shè)置多域名301跳轉(zhuǎn)到主域名的方法,包括重寫規(guī)則中問號(hào)匹配問題的解決,需要的朋友可以參考下
    2016-06-06
  • 超詳細(xì)講解Linux DHCP服務(wù)

    超詳細(xì)講解Linux DHCP服務(wù)

    這篇文章主要介紹了Linux DHCP 服務(wù),它可以避免IP地址沖突,提高了IP地址的利用率等優(yōu)點(diǎn)。感興趣的小伙伴一起來學(xué)習(xí)吧
    2021-08-08
  • 基于ubuntu16 Python3 tensorflow(TensorFlow環(huán)境搭建)

    基于ubuntu16 Python3 tensorflow(TensorFlow環(huán)境搭建)

    這篇文章主要介紹了基于ubuntu16 Python3 tensorflow(TensorFlow環(huán)境搭建),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Linux虛擬機(jī)不顯示IP地址的解決方法(親測(cè)有效)

    Linux虛擬機(jī)不顯示IP地址的解決方法(親測(cè)有效)

    本文主要介紹了通過VMware新裝的Linux系統(tǒng)沒有IP地址的解決方法,主要步驟包括:關(guān)閉虛擬機(jī)、打開VM虛擬網(wǎng)絡(luò)編輯器、還原VMnet8或修改網(wǎng)關(guān),解決后,通過ifconfig命令查看IP地址,需要的朋友可以參考下
    2025-03-03
  • CentOS 7.2安裝Zabbix 3.2教程詳解

    CentOS 7.2安裝Zabbix 3.2教程詳解

    這篇文章主要介紹了CentOS 7.2安裝Zabbix 3.2教程詳解的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11

最新評(píng)論

玛纳斯县| 赣州市| 尼玛县| 南江县| 乌苏市| 丹东市| 邵阳市| 丰城市| 临江市| 宁国市| 昌图县| 德昌县| 镇巴县| 米泉市| 莱芜市| 舟曲县| 靖宇县| 尉氏县| 舟山市| 铜川市| 榆社县| 六枝特区| 大新县| 安平县| 湟中县| 康马县| 广饶县| 游戏| 乐都县| 文登市| 古田县| 拜城县| 临夏县| 平安县| 道孚县| 苏州市| 增城市| 闸北区| 揭西县| 襄汾县| 天全县|