您输入的String[]
参数Runtime.exec()
不正确。必须对其进行拆分,以便每个项目包含一个元素(可执行文件必须是一个字符串,然后每个单独的参数都必须包含在其自己的字符串中)。
尝试类似的方法:
songProcess = Runtime.getRuntime().exec(new String[]{"find", "/home/gozenem/emiornek/", "-name", "*.xml"});
也waitFor
不要打电话给您在做什么。您需要在进程运行时读取输出,否则就有可能填满Java VM和您的进程之间使用的I / O缓冲区的风险。因此,waitFor
在处理完输出后将其移动到。
从流程文档中:
默认情况下,创建的子进程没有自己的终端或控制台。它的所有标准I / O(即stdin,stdout,stderr)操作都将重定向到父进程。由于某些本机平台仅为标准输入和输出流提供有限的缓冲区大小,因此未能及时写入子流程的输入流或读取子流程的输出流可能导致子流程阻塞甚至死锁 。