我正在使用以下代码连续运行 shell 脚本。
String[] process = new String[] {"/bin/sh", "-c","pgrep httpd" };
Process proc = new ProcessBuilder(process).start();
InputStreamReader input = new InputStreamReader(proc
.getInputStream());
BufferedReader reader = new BufferedReader(input);
String line = reader.readLine();
reader.close();
input.close();
在线程中运行此代码时,我收到错误消息
MESSAGE: Too many open files
java.net.SocketException: Too many open files
和
Cannot run program "/bin/sh": java.io.IOException: error=24, Too many open files.
如何避免这个问题。
最佳答案
发生这种情况的原因有很多:
您可以打开的文件数量可能有限制。您可能需要增加/etc/security/limits.conf 文件中允许打开的文件数。
如果您在一个循环中连续运行它,那么它可能会导致大量进程的产生。您可能希望
int exitValue = p.waitFor()
等待过程来完成。
关于java - 在 java 中,出现错误 "Cannot run program "/bin/sh“: java. io.IOException : error=24, 打开的文件太多”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6274970/