Java System.in/out/err 始终开放吗?



Javadoc说inouterr"已经打开",我只是想知道它们在程序完成后会关闭吗?如果不是,是否与使用后关闭任何 I/O 流引用的做法相矛盾?

stdinstdoutstderr在很大程度上是一个Unix概念,但其他操作系统(如Windows)也复制了这个概念。这些由系统维护,您通常不会关闭它们。

但是,您可以关闭它们,甚至必须在fork()程序时关闭它们,这是让程序从命令行分离并在后台运行的 Unix 方式,例如守护程序。

System.in/out/err遵循此策略。因此,您可以关闭它们,但不必这样做,因为它们是特殊的系统资源。

System.in/out/err 这些类是由 JVM 实例化的,而不是由我们实例化的。 因此,JVM将负责关闭它们。

相关内容

最新更新