【问题标题】:How to set argv[0] name for ps when spawning program from Java's getRuntime().exec()?从 Java 的 getRuntime().exec() 生成程序时,如何为 ps 设置 argv[0] 名称?
【发布时间】:2012-04-16 09:07:44
【问题描述】:

从 java getRuntime().exec() 生成程序时如何为 ps 设置 argv[0] 名称?

Runtime rt = Runtime.getRuntime();
String[] cmd = {"/bin/sh", "-c", "ls > hello"};
rt.exec(cmd);

我希望进程在 ps ef 输出中有另一个名称。 在 C 中你可以覆盖 argv[0] 指针,在 java 中怎么做?

【问题讨论】:

    标签: java runtime.exec


    【解决方案1】:

    在 Java 中,您需要创建一个指向可执行文件的符号链接并调用它。我不相信你可以访问argv[0]

    【讨论】:

      【解决方案2】:

      @user1335897:ProcessBuilder 提供了比 Runtime 更大的灵活性,请尝试使用以下代码:

      ProcessBuilder processBuilder = new ProcessBuilder(args);
      
          if (envMap != null) {
              processBuilder.environment().putAll(envMap);
          }
      
          try {
              Process process = processBuilder.start();
              process.waitFor();
          } catch (IOException ioe) {
          } catch (InterruptedException ie) {
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        • 2012-07-26
        • 2010-11-06
        • 2012-11-08
        • 1970-01-01
        • 2014-04-01
        • 1970-01-01
        相关资源
        最近更新 更多