子程序的環境變數問題

2021-08-01 16:55:32 字數 879 閱讀 9762

1.我在做專案的時候遇到乙個問題:

c程式使用execle呼叫了乙個指令碼並用環境變數的方式給他傳參,然後這個指令碼需要再去呼叫另乙個指令碼,我寫了乙個程式來測試後面被呼叫的指令碼

有沒有在使用這個環境變數

基礎知識:

execle(const char *path, const char *arg, ..., char * const envp)

引數:path引數表示你要啟動程式的名稱包括路徑名

arg引數表示啟動程式所帶的引數,一般第乙個引數為要執行命令名,不是帶路徑且arg必須以null結束

返回值:成功返回0,失敗返回-1

#include

#include

#include

#include

#include

int main(void)

//give_env.sh

#!/bin/sh

echo "1=$1,2=$2"

echo "give $env,$env2"

./print_env.sh $env $env2

//print_env.sh

#!/bin/sh

echo '$1='$1

echo env=$env

echo env2=$env2

echo env3=$env3

echo env_test=$env_test

執行結果:

1=,2=

give hello,world

$1=hello

env=hello

env2=world

結論:子程序是繼承了父程序的環境變數(這個很多將程序的地方都有提到),而且指令碼呼叫新的指令碼,也會和舊的指令碼共享環境變數!

程序的環境變數environ

程式設計之路剛剛開始,錯誤難免,希望大家能夠指出。每個程序都有自己的環境變數,在c語言程式中可使用外部變數 char environ 來訪問環境,而庫函式可允許程序去獲取或修改自己環境的值。兩種方法使用該變數。第一種是將其直接宣告為外部變數,就可以直接呼叫了 第二種,該變數在unistd.h標頭檔案...

Linux程序環境變數簡介

最早知道環境變數是裝jdk時,需要對path進行操作,path也是全域性環境變數.linux有一些環境變數可以在.bashrc中修改 cabal 環境變數新增到path中 export path home cabal bin path程序也有環境變數,其實就是一些key value 儲存位置位於程序...

檢視程序的環境變數 轉

使用env或者 set 命令可以檢視系統當前的環境變數 在 linux 系統下面,程序的環境變數來自於兩部分 1 程序初始化時由載入器載入的環境變數 來自於系統 父程序或者 exec 系統呼叫的引數 2 和程序執行過程中由 setenv 函式動態設定或修改的環境變數。程序初始化時由載入器載入的環境變...