我目前正在研究我自己的歷史內建副本。 我知道我需要HISTSIZE,HISTFILE和HISTFILESIZE變量來實現命令選項,但我不知道如何獲取它們。有沒有類似於getenv的函數或像environ這樣的變量,但是使用本地shell變量?如何獲得C中的本地shell變量?
在此先感謝!
我目前正在研究我自己的歷史內建副本。 我知道我需要HISTSIZE,HISTFILE和HISTFILESIZE變量來實現命令選項,但我不知道如何獲取它們。有沒有類似於getenv的函數或像environ這樣的變量,但是使用本地shell變量?如何獲得C中的本地shell變量?
在此先感謝!
井一個內置直接由外殼2個的可能原因執行:
一個shell只能通過兩種方式提供進入其內部變量:
據我所知,沒有通用的shell執行下去,但你可以將需要的shell變量導出到環境:
export HIST
export HISTSIZE
export HISTFILESIZE
應該足以後來讓他們通過getenv
主聲明可以有一個額外的參數char **envp
,它是一個由NULL指針終止的二維數組。這裏有一個例子:
#include <stdio.h>
int main(int argc, char **argv, char **envp)
{
int index = 0;
while (envp[index])
printf("%s\n", envp[index++];
return 0;
}
編輯
使用envp將爲您提供獲得環境在。要找到shell變量,我找到了this。我認爲這可以幫助你。
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("SET = %s\n",getenv("SET"));
return 0;
}
爲了測試程序,設置變量,然後再執行: -
出口SET = 1
由於STEFFAN Hegny指出的那樣,沒有辦法,如果他們沒有進入電影這些變量環境變量。所以popen()
,我認爲可以幫助,不是解決您的問題。
但是,如果您需要訪問這些變量,則可以將它們的值導出到可通過getenv(char*)
訪問的實際環境變量。
E.g.
export _HISTFILE=$HISTFILE && ./myProgram
或
_HISTFILE=$HISTFILE ./myProgram
與myProgram
訪問這樣的值:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("History file: %s", getenv("_HISTFILE"));
}
在你的主要聲明中,你可以使用'char ** envp',所以它看起來像:'int main(int argc,char ** argv,char ** envp)'。希望它有幫助 –
['std :: getenv'](http://en.cppreference.com/w/cpp/utility/program/getenv) – Danh
我沒有得到HIST變量envp – Bob