程式中獲取Shell程序環境變數值

2021-05-27 05:07:19 字數 922 閱讀 5413

程式中獲取shell程序環境變數值

1. get all

程序的環境是乙個以null字元結尾的字串之集合。如:

name=something

linux系統提供了environ指標來訪問其變數內容。

如下程式showenv.c演示了通過environ指標變數訪問環境變數:

extern char** environ;

main()

return;

}2. add

為程序指定新的環境,需:execle()和execve()  [in ]

如下程式addenv.c 演示了把新的環境傳給上面的showenv.c:

#include

main()

,*envp=;

execve("../exe/showenv.x",argv,envp);

perror("exeve failed");

return;

}結果:

nick=home

home=nick

其實,linux系統庫stdlib.h提供了putenv(),它完成與addenv同樣的工作。方法為:putenv("newvariable=value");如成功返回0。它只改變呼叫程序的環境變數,父程序不變。

3 get one or find someone

findenv()根據給的name掃瞄環境內容,找出「name=something」這種形式的字串。

/*找不到則返回null*/

extern char** environ;

char* findenv(char* name)

return null;

}int pcmp(char* s1,char* s2)

return i;

crontab啟動shell指令碼的環境變數問題

問題描述 crontab中啟動的shell指令碼不能正 常執行,但是使用手動執行沒有問題,在 home pr ofile中設定了指令碼所需要的環境變數。cron命令的預設shell是 bin sh,如果要在cron啟動的指令碼中使用 ksh,就必須在指令碼中的第一行新增 bin sh 的宣告。如果c...

linux C程式中獲取shell指令碼輸出

本文使用docbook書寫,您可以在這裡獲得xml 檔案 abstract 本文描述了從linux程式中執行 shell 程式 指令碼 並獲得輸出結果的方法。table of contents 1.前言 2.使用臨時檔案 3.使用匿名管道 4.使用popen 5.小結 unix界有一句名言 一行sh...

linux c程式中獲取shell指令碼輸出

1.前言 unix界有一句名言 一行shell指令碼勝過萬行c程式 雖然這句話有些誇張,但不可否認的是,借助指令碼確實能夠極大的簡化一些程式設計工 作。比如實現乙個ping程式來測試網路的連通性,實現ping函式需要寫上200 300行 為什麼不能直接呼叫系統的ping命令呢?通常在程式 中通過 s...