Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Posix中将Shell上下文变量传递给编译语言(Java/C/C+;+;)_Java_C++_C_Shell_Ipc - Fatal编程技术网

在Posix中将Shell上下文变量传递给编译语言(Java/C/C+;+;)

在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”?老实说,如果这是不可能的,我不会感到惊讶,但我觉得这是一个值得问

这是一个非常简单的问题,但我还没有找到答案

我正在运行一个shell脚本,在该shell脚本的范围内,我定义了一些变量。我想从shell脚本的上下文中运行的程序中以某种方式访问这些变量。例如,如果我运行一个脚本

#!/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不会让我在这么短的时间内接受你的回答。非常感谢你的回答和这么快的回答。几分钟后您将收到一张绿色支票。