環境變數和地址空間
環境變數
linux系統中的環境變數是用來指定系統執行的環境的一些引數,例如編寫程式碼時,連結時的動態靜態庫,我們並不知道在哪裡,但照樣可以連結成功,簡單來說,就是通過環境變數幫助編譯器進行查詢。
檢視環境變數
echo $環境變數名稱
常見的幾個環境變數
- PATH:系統提供搜尋路徑的環境變數
- HOME: 簡單來說就是使用者登入到linux系統中時,預設的目錄
- HISTSIZE:儲存歷史命令記錄的條數(例如,翻動上鍵時可以找到上一次的命令,此次算一條)
- SHELL:當前SHELL,值通常為/bin/bash
環境標量相關的指令
- env :顯示所有的環境變數
- echo:顯示某個環境標量
- export:設定一個新的環境變數
- unset: 清除環境變數
- set: 顯示本地定義的環境變數
環境變數也是一種變數,這種變數具有全域性屬性
獲取環境變數的方法
1. 通過程式碼獲取,用main函式的引數來獲取
#include<stdio.h>
int main(int argc,char *argv[],char *env[]) //第一個參數列示引數的個數,第二個是具體的引數,第三個是環境變數
{
int i = 0;
for(; env[i];i ++i)
{
printf("%s\n",env[i]);
}
retrun 0;
}
2.通過第三方變數enviro獲取
#include<stdio.h>
int main()
{
3.用getenv函式來訪問特定的的環境變數
printf("%s\n",getenv());
地址空間
記憶體地址就是對一個記憶體的一個編號,一個地址指向的就是記憶體的某個位置
在實際操作中我們發現,用fork建立的子程式和父程式輸出的地址一模一樣,但內容變數是不一樣的,在實際中,兩個程式的實體地址是不可能一樣的,由此可以得出結論:我們用c/c++語言所看到的地址都是——虛擬地址,子程式和父程式輸出的變數不是同一個變數
建立一個程式的底層實現,如下圖
建立一個程式總結:
- 先為程式建立一個PCB;
- 每一個PCB都指向一個虛擬地址(mm_struct);
- 系統在分配一個頁表將虛擬地址對映到實體記憶體當中;(如上圖所指,所以父程式和子程式的地址相同,即虛擬地址相同,內容不同,其實是被對映到了不同的物理空間)
相關文章
- PCIE配置和地址空間
- Mac 設定環境變數的位置、檢視和新增PATH環境變數Mac變數
- JS變數和執行環境JS變數
- GBASEDBTSERVER 環境變數7GBASEDBTSHMBASE 環境變數 (UNIX™)Server變數
- 簡述SHELL全域性環境變數與局變環境變數變數
- Vue 設定環境變數和模式Vue變數模式
- 在Linux中,什麼是環境變數?如何設定和檢視環境變數?Linux變數
- Java 環境變數Java變數
- jdk環境變數JDK變數
- postman環境變數Postman變數
- DOS環境變數變數
- 配置環境變數變數
- env 環境變數變數
- 環境變數path變數
- ubuntu 快捷新增和刪除環境變數Ubuntu變數
- 什麼是環境變數?Python中如何設定環境變數?變數Python
- Java環境變數新增Java變數
- Flume 配置環境變數變數
- 環境變數詳解變數
- 配置JDK環境變數JDK變數
- windows配置環境變數Windows變數
- Linux環境變數配置Linux變數
- Shell配置環境變數變數
- ubuntu JDK 環境變數UbuntuJDK變數
- Linux常用環境變數Linux變數
- 介面測試實戰--postman全域性變數和環境變數Postman變數
- 變數的分類(臨時(本地)變數、環境變數、全域性變數和系統變數)變數
- [Linux]程序地址空間Linux
- 常用的DOS命令和配置JDK環境變數JDK變數
- 在Linux下檢視和修改環境變數Linux變數
- 4.2.10.2 設定和取消設定環境變數變數
- shell(2)永久環境變數和字串顯位變數字串
- python設定環境變數(臨時和永久)Python變數
- 如何檢視Docker容器環境變數,如何向容器傳遞環境變數Docker變數
- 什麼是環境變數?python設定環境變數有什麼用?變數Python
- node.js環境安裝及環境變數Node.js變數
- Linux配置環境變數$PATHLinux變數
- java 環境變數的配置Java變數