在 Linux 系统中,网络设备面向数据包的接收和发送而设计,它并不对应于文件系统的节点。内核与网络设备的通信和内核与字符设备、块设备的通信方式完全不同。
除网络设备外,字符设备与块设备都被映射到 linux 文件系统的文件和目录(如下图所示),通过文件系统的系统调用接口 open()、write()、read()、close() 等函数即可访问字符设备和块设备。所有的字符设备和块设备都被统一地呈现给用户。块设备比字符设备复杂,在它上面会首先建立一个磁盘/Flash 文件系统,如 FAT、Ext3、YAFFS、JFFS等。 FAT、Ext3、YAFFS、JFFS规范了文件和目录在存储介质上的组织。
应用程序可以使用 LINUX 的系统调用接口函数,也可以使用 C 库函数,出于代码可移植性考虑,推荐用 C 库函数。因为,C 库函数本身也通过系统调用接口而实现,如 C 库中的 fopen()、fwrite()、fread()、fclose() 分别会调用操作系统 API 的 open()、write()、read()、close() 函数。