将变量注入正在运行的进程中

时间:2014-06-23 04:56:49

标签: variables global-variables environment-variables

有没有办法在没有进程侦听RPC请求的情况下将变量注入正在运行的进程?

例如,如果进程正在运行并使用环境变量,我是否可以在运行时更改该环境变量并使该进程使用新值?

是否有其他解决方案可以在正在运行的流程中动态更改变量?假设这个过程就像一个PHP进程或Javascript(node.js)进程,所以我可以更改源代码......等。

我认为这类似于传递状态或与另一个进程通信,但我需要一种非常轻量级的方法,而不需要通过网络或使用库,或者最好不要设置RPC服务器。

解决方案不一定是跨平台的。喜欢Linux。

2 个答案:

答案 0 :(得分:1)

你可以用java做到这一点。想象一下这是你的线程类:

public void ThreadClass extends Thread {
Boolean state;

ThreadClass(Boolean b) {
state = b;
    }

public void StopThread() {
state = false;
    }

public void run() {
while(state) { //Do whatever you want here}
    }
}

现在你要做的就是从你的主类开始这个帖子:

ThreadClass thread = new ThreadClass(true);
    thread.start();

如果你想改变state的值,可以像这样在线程中调用StopThread方法:

try {
        thread.StopThread();
    } catch (InterruptedException ex) {
        Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
    }

这将在线程运行时更改布尔值的状态。

答案 1 :(得分:0)

似乎可以采用共享内存等本地IPC实现:Fastest technique to pass messages between processes on Linux?