在Java中,PrintStream如何最终将文本打印到控制台



因此,根据我的理解,PrintStream必须使用某种Java Native Interface与操作系统通信,这样它才能写入标准输出,还是Java使用了其他技术?我想知道JVM的体系结构吸引了我。了解它的工作方式和系统本身的体系结构对我来说非常有趣。

OpenJDK中的标准输出流是封装BufferedOutputStreamPrintStream,封装从FileDescriptor创建的FileOutputStream。有一些特殊的FileDescriptor对象,它们对应于stdin、stdout和stderr(特别是,请参见FileDescriptor.out)。它们具有众所周知的数字(例如,stdout文件描述符是1)。所以真正的逻辑在FileOutputStream.writeBytes方法内部,当然它是原生的。在Java方面,我们有缓冲、同步和将字符转换为字节。底层内容(直接向文件描述符写入字节)由本机代码完成。

Java System.out PrintStream写入stdout。维基百科将stdout描述为,

标准输出的文件描述符为1(一);POSIX <unistd.h>的定义是CCD_;对应的CCD_ 13变量为CCD_;类似地,<iostream>变量是std::cout

System.out的Javadoc说(部分)

"标准"输出流。此流已打开,可以接受输出数据。

相关内容

  • 没有找到相关文章

最新更新