如何从 Kotlin 代码执行外部命令(启动进程)?
大家好!我刚开始学习 Kotlin,正在编写一个小型控制台应用程序。我需要执行外部命令,例如运行 ping 或使用 cp 复制文件。在 Java 中,我使用了 Runtime.getRuntime().exec(),但在 Kotlin 中,我看到有一些内置函数,比如 ProcessBuilder,但我不完全理解如何使用它们。
我尝试编写了以下代码:
```kotlin
fun main() {
val command = "ping -c 4 google.com"
val process = Runtime.getRuntime().exec(command)
val reader = BufferedReader(InputStreamReader(process.inputStream))
var line: String?
while (reader.readLine().also { line = it } != null) {
println(line)
}
}
```
但它只输出第一行然后挂起。我是不是做错了什么?另外,我听说 Kotlin 有更符合习惯用法的方式,而不是使用 Java 类。请告诉我如何正确调用外部命令?我不仅需要启动,还需要读取输出,并处理可能的错误。