【问题标题】:Injecting Variables into a running Process将变量注入正在运行的进程中
【发布时间】:2014-08-13 01:28:13
【问题描述】:

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

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

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

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

解决方案不必是跨平台的。更喜欢 Linux。

【问题讨论】:

  • 您希望解决方案使用哪种编程语言?
  • 任何,PHP,JS,Python,Ruby,Erlang,你能想到的都有。
  • 你不知道这会是什么编程语言?
  • 它可以是任何一个。我正在寻找一种通用模式,可以移植和理解到我工作的任何环境中。
  • JavaScript 进程是什么意思?

标签: variables global-variables environment-variables


【解决方案1】:

看起来像共享内存这样的本地 IPC 实现是可行的方法:Fastest technique to pass messages between processes on Linux?

【讨论】:

    【解决方案2】:

    你可以用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);
        }
    

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

    【讨论】:

    • 这就是我认为你的意思,因为问题很模糊
    猜你喜欢
    • 2011-08-21
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多