理解 I/O 的一些概念问题可以先看另一篇文章《C Socket 编程》 Go 语言把 I/O 操作抽象成为 Reader 和 Writer 接口,并在 C 语言的基础上又设置了一层缓存操作。
C Socket 编程
一切皆文件,I/O 操作无处不在,文件、设备、管道、Socket等都是 I/O 操作。C 语言对文件 I/O 操作分两种,一种是无缓冲的(用户层无缓存区),返回的是文件描述符(int 整型),代表函数是 open、read、write 和 socket 等;另一种是有缓冲的(用户层设计了缓存区),返回是的数据流 Stream(FILE 结构体),代表函数是 fopen、fread、fwrite、putc、getc、fputs、fgets 和 fprintf等;不过 C 标准已经不再支持对文件(这里没有包括 socket)的无缓冲操作。