Runtime.getRuntime().exec(cmd)使用不当会引起java.io.IOException: Too many open files吗
时间: 2024-02-10 14:56:42 浏览: 126
是的,如果在Java程序中频繁地调用 `Runtime.getRuntime().exec(cmd)` 执行外部命令,而没有正确地关闭这些子进程,就会导致文件句柄被耗尽,从而抛出 `java.io.IOException: Too many open files` 异常。
为了避免这种情况发生,应该在每次执行完 `cmd` 命令后,使用 `Process.destroy()` 方法来关闭子进程,释放资源。另外,还可以通过增加系统的最大文件句柄数来解决这个问题。在Linux系统中,可以使用 `ulimit` 命令来查看和设置最大文件句柄数。
相关问题
android runtime.exec 权限,Android Runtime.getRuntime().exec(“su”)java.io.IOException:权限被拒绝...
在 Android 中,执行命令需要相应的权限。在你的情况下,你需要使用 `android.permission.ACCESS_SUPERUSER` 权限才能执行 `su` 命令。
要在你的应用程序中请求超级用户权限,你需要在 AndroidManifest.xml 文件中添加以下行:
```
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
```
请注意,这个权限只有在设备被 root 后才能使用。如果设备没有被 root,你不能使用 `su` 命令来获得超级用户权限。
Runtime.getRuntime().exec("字符串")引发的 Runtime.getRuntime().exec("cmd /c tasklist ");
Runtime.getRuntime().exec("字符串")方法是Java中的一个方法,它可以在运行时执行一个系统命令。当你调用Runtime.getRuntime().exec("cmd /c tasklist")时,它实际上会执行Windows命令行中的tasklist命令。tasklist命令会列出当前正在运行的进程。
阅读全文