java - 如何在java中编码以使用cygwin在Windows环境中运行内部使用rSync的unix shell脚本?

标签 java windows shell jakarta-ee cygwin

我正在使用 cygwin 在 Windows 上获取 unix 环境。

我有一些在 cygwin 上运行的 shell 脚本来执行同步工作和其他操作。我想通过java代码执行这些脚本。

此外,在 cygwin 上执行脚本期间,通过使用简单的 echo 命令在终端上显示某些信息。我想在我的应用程序中显示所有这些信息。

我该怎么做?

最佳答案

使用Runtime运行 Cygwin 的类。这是非常脆弱的,并且取决于您的设置,但在我的机器上我会这样做:

Runtime r = Runtime.getRuntime();
Process p = r.exec("C:\\dev\\cygwin\\bin\\mintty.exe --exec /cygpath/to/foo.sh");

然后等待Process完成,并获取其 InputStream 对象的句柄以查看发送到 stdout 和 stderror 的内容。

命令的第一部分是运行 cygwin,第二部分是执行一些脚本或命令(使用 -e--exec)。我会在 DOS 提示符下测试这个命令,看看它是否有效,然后再剪切任何代码。另外,请通过执行以下操作来查看可用的选项:

C:\dev\cygwin\bin\mintty.exe --help

也可以在 DOS 提示符下进行。

编辑:以下内容适合我打印版本信息


public class RuntimeFun {
   public static void main(String[] args) throws Exception {
      Runtime r = Runtime.getRuntime();
      Process p = r.exec("C:\\dev\\cygwin\\bin\\mintty.exe --version");
      p.waitFor();

      BufferedReader buf = new BufferedReader(
               new InputStreamReader(
                        p.getInputStream()));
      String line = buf.readLine();
      while (line != null) {
          System.out.println(line);
          line = buf.readLine();
      }
   }
}

不幸的是,似乎无法让它与 --exec 一起工作,因此您必须在那里进行更多研究。

关于java - 如何在java中编码以使用cygwin在Windows环境中运行内部使用rSync的unix shell脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9840970/

相关文章:

java - 我的单利计算器因空指针异常错误而崩溃

java - 当中间件失败时,有没有办法让集成测试快速失败?

windows - 控制多个系统上的 PerfMon 日志记录

C: main() 返回一个数组总是等于 56

AJAX 进度条 - 轮询, cometd ?

Java 泛型 - 何时使用 "T"和 "?"

java - 未找到异常 hibernate.properties

c# - Win10中的EnumWindows函数只枚举桌面应用

c++ - Windows 上的任何原生 XML DOM 都可以控制内存分配吗?

linux - 根据文件输入执行不同功能的 Shell 脚本