Java/Kotlin 运行 Runtime.getRuntime().exec() 并带有可见的命令提示符

标签 java kotlin runtime.exec

在我的 Windows 系统上,我想使用 Runtime.getRuntime().exec(command) 来使用 python 脚本启动子进程,并打开命令提示符终端,以便用户可以看到流程工作。我的命令是这样的:

val command = "cmd/c python ~path_to_file~ ~args~"

我知道有一种替代方法可以通过以下方式将命令提示符的内容打印回原始终端:

import java.util.Scanner
fun main(args: Array<String>) {
    val proc = Runtime.getRuntime().exec("cmd /C dir") 
    Scanner(proc.inputStream).use {
        while (it.hasNextLine()) println(it.nextLine())
    }
}

只是想知道是否还有其他我还没有见过的选择。

最佳答案

我认为你应该使用ProcessBuilder的重定向:

fun main() {
    ProcessBuilder("cmd", "/C", "dir")
        .redirectOutput(ProcessBuilder.Redirect.INHERIT)
        .start()
        .waitFor()
}

此示例的行为与您的相同。

关于Java/Kotlin 运行 Runtime.getRuntime().exec() 并带有可见的命令提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60766227/

相关文章:

java - 执行外部程序

java - mysqldump 从 java 运行时返回代码 6,但相同的命令在命令行中运行良好

java - 是否有任何库可以让我们在 recyclerview 中获得选框效果(例如 hotstar vip 页面滚动图像)?

java - createAgent() Jade 中的非法访问异常

javascript - 如何更正 webjars 的包含路径?

java - 如何在 Kotlin DSL 中动态加载 TeamCity 子项目

java - 使用类路径中的 Kotlin 运行时库执行 Java 和 Kotlin 程序

android - 当在键盘上按下特定字符时,我可以切换到另一个 EditText 吗?

java - 以编程方式重启 Linux m/c

java - 在 Java 中存储预排序键值对的内置方法?