Java System.in/out/err 是否始终打开?
Are Java System.in/out/err always open?
Javadoc 说 in
、out
和 err
是 'already open',我只是想知道它们会在程序完成后关闭吗?如果不是,是否与使用后关闭任何 I/O 流引用的做法相矛盾?
System.in/out/err这些类是JVM实例化的,不是我们实例化的。
因此 JVM 将负责关闭它们。
stdin
、stdout
和 stderr
在很大程度上是一个 Unix 概念,但其他操作系统(例如 Windows)也复制了这个概念。这些都是系统维护的,平时不用关闭。
但是,您可以关闭它们,并且当您fork()
一个程序时,您甚至必须关闭它们,这是让程序从命令行分离并 运行 在后台运行的 Unix 方式,例如守护进程。
System.in
/out
/err
遵循这个策略。所以你可以关闭它们,但你不必这样做,因为它们是特殊的系统资源。
Javadoc 说 in
、out
和 err
是 'already open',我只是想知道它们会在程序完成后关闭吗?如果不是,是否与使用后关闭任何 I/O 流引用的做法相矛盾?
System.in/out/err这些类是JVM实例化的,不是我们实例化的。 因此 JVM 将负责关闭它们。
stdin
、stdout
和 stderr
在很大程度上是一个 Unix 概念,但其他操作系统(例如 Windows)也复制了这个概念。这些都是系统维护的,平时不用关闭。
但是,您可以关闭它们,并且当您fork()
一个程序时,您甚至必须关闭它们,这是让程序从命令行分离并 运行 在后台运行的 Unix 方式,例如守护进程。
System.in
/out
/err
遵循这个策略。所以你可以关闭它们,但你不必这样做,因为它们是特殊的系统资源。