在 Posix 中将 Shell 上下文变量传递给编译语言 (Java/C/C++)
Passing Shell Context Variables to Compiled Language (Java/C/C++) in Posix
这是一个非常简单的问题,但我一直找不到答案。
我正在 运行 编写一个 shell 脚本,并且在该 shell 脚本的范围内我已经定义了一些变量。我想以某种方式从 shell 脚本上下文中的程序 运行 中访问这些变量。例如,如果我 运行 一个看起来像
的脚本
#!/bin/sh
VARIABLE_NAME="somevalue";
java Main;
./compiled-c-or-cpp.out
如何从 Main 或已编译的 C/C++ 中访问 "$VARIABLE_NAME"
?老实说,如果这是不可能的,我不会感到惊讶,但我认为这是一个值得提出的问题。
我认为我不能为此使用环境变量。 我知道如何通过 Java的System.getEnv("VARIABLE_NAME")
方法和C的getenv("VARIABLE_NAME")
方法。但是,我最终实现的过程将用于 very 多线程应用程序。我需要能够使用 context 变量,这样我就可以让多个线程同时访问它们自己的 "$VARIABLE_NAME"
,而不是 export
-ing环境变量到全shell.
也就是说,我承认我对环境变量的范围没有完全的了解。例如,如果每次调用 Runtime.getRuntime().exec("./script.sh")
(对于 Java)或 system("./script.sh")
(对于 C/C++)都分配了自己的 shell,并且如果我能够将 export
环境变量仅更改为临时 shell,那么这将是一个可以接受的解决方案。
感谢任何人的帮助:)
您可以将一个环境变量导出到一个进程,而无需在您的 shell:
VARIABLE_NAME="somevalue" java Main
在你的情况下,它更可能是这样的
VARIABLE_NAME="somevalue" (java Main; ./compiled-c-or-cpp.out)
这是一个非常简单的问题,但我一直找不到答案。
我正在 运行 编写一个 shell 脚本,并且在该 shell 脚本的范围内我已经定义了一些变量。我想以某种方式从 shell 脚本上下文中的程序 运行 中访问这些变量。例如,如果我 运行 一个看起来像
的脚本#!/bin/sh
VARIABLE_NAME="somevalue";
java Main;
./compiled-c-or-cpp.out
如何从 Main 或已编译的 C/C++ 中访问 "$VARIABLE_NAME"
?老实说,如果这是不可能的,我不会感到惊讶,但我认为这是一个值得提出的问题。
我认为我不能为此使用环境变量。 我知道如何通过 Java的System.getEnv("VARIABLE_NAME")
方法和C的getenv("VARIABLE_NAME")
方法。但是,我最终实现的过程将用于 very 多线程应用程序。我需要能够使用 context 变量,这样我就可以让多个线程同时访问它们自己的 "$VARIABLE_NAME"
,而不是 export
-ing环境变量到全shell.
也就是说,我承认我对环境变量的范围没有完全的了解。例如,如果每次调用 Runtime.getRuntime().exec("./script.sh")
(对于 Java)或 system("./script.sh")
(对于 C/C++)都分配了自己的 shell,并且如果我能够将 export
环境变量仅更改为临时 shell,那么这将是一个可以接受的解决方案。
感谢任何人的帮助:)
您可以将一个环境变量导出到一个进程,而无需在您的 shell:
VARIABLE_NAME="somevalue" java Main
在你的情况下,它更可能是这样的
VARIABLE_NAME="somevalue" (java Main; ./compiled-c-or-cpp.out)