不要从ProcessBuilder.start()启动您的进程,不要试图搞乱Java中的流重定向/消费,使用ProcessBuilder.start(),将启动一个吞噬所有输入/输出流的小shell脚本。
像这样的东西:
#!/bin/bash
nohup $1 >/dev/null 2>error.log &
那就是:如果你不关心stdout,并且仍然将stderr记录到文件中(这里是error.log)。
如果您甚至不关心stderr,只需将其重定向到stdout:
#!/bin/bash
nohup $1 >/dev/null 2>1 &
若用Java调用那个小脚本,将它作为一个参数给你想要运行的进程的名称。 如果在Linux上运行,将stdout和stderr重定向到/dev/null的进程,仍然产生任何东西。