在Posix中将Shell上下文变量传递给编译语言(Java/C/C+;+;)
这是一个非常简单的问题,但我还没有找到答案 我正在运行一个shell脚本,在该shell脚本的范围内,我定义了一些变量。我想从shell脚本的上下文中运行的程序中以某种方式访问这些变量。例如,如果我运行一个脚本在Posix中将Shell上下文变量传递给编译语言(Java/C/C+;+;),java,c++,c,shell,ipc,Java,C++,C,Shell,Ipc,这是一个非常简单的问题,但我还没有找到答案 我正在运行一个shell脚本,在该shell脚本的范围内,我定义了一些变量。我想从shell脚本的上下文中运行的程序中以某种方式访问这些变量。例如,如果我运行一个脚本 #!/bin/sh VARIABLE_NAME="somevalue"; java Main; ./compiled-c-or-cpp.out 如何从Main或编译的C/C++中访问“$VARIABLE\u NAME”?老实说,如果这是不可能的,我不会感到惊讶,但我觉得这是一个值得问
#!/bin/sh
VARIABLE_NAME="somevalue";
java Main;
./compiled-c-or-cpp.out
如何从Main或编译的C/C++中访问“$VARIABLE\u NAME”
?老实说,如果这是不可能的,我不会感到惊讶,但我觉得这是一个值得问的问题
我不认为我可以使用环境变量来实现这一点。我知道如何通过Java的System.getEnv(“VARIABLE\u NAME”)
方法和C的getEnv(“VARIABLE\u NAME”)
方法访问环境变量。然而,我最终实现的过程将在一个非常多线程的应用程序中使用。我需要能够使用上下文变量,这样我就可以让多个线程同时访问它们自己的“$VARIABLE\u NAME”
,而不是将环境变量导出到整个shell中
也就是说,我承认我对环境变量的范围没有完全的了解。例如,如果对Runtime.getRuntime().exec(“./script.sh”)
(对于Java)或system(“./script.sh”)
(对于C/C++)的每个调用都分配了自己的shell,并且如果我能够将环境变量导出到该临时shell,那么这将是一个可以接受的解决方案
感谢所有人的帮助:)您可以将环境变量导出到一个进程中,而无需将其放在shell中:
VARIABLE_NAME="somevalue" java Main
在你的情况下,更可能是这样
VARIABLE_NAME="somevalue" (java Main; ./compiled-c-or-cpp.out)
好的,我只是想让你知道这是有效的(!),但是StackOverflow不会让我在这么短的时间内接受你的回答。非常感谢你的回答和这么快的回答。几分钟后您将收到一张绿色支票。