第 7 章。系统调用

目录
7.1. open()
7.2. write()
7.3. read()
7.4. poll()
7.5. close()
7.6. mmap()
7.7. fcntl(sg_fd, F_SETFL, oflags | FASYNC)
7.8. errno 中报告的错误

本章讨论了可用于 sg 设备的系统调用。ioctl() 系统调用将在下一章中讨论 [ 参见 第 8 章 ]。

成功打开 sg 设备文件名(例如/dev/sg0)在文件描述符和连接的 SCSI 设备之间建立链接。sg 驱动程序在 SCSI 设备(例如,独占锁)和文件描述符(例如,保留缓冲区)级别维护状态信息和资源。

当应用程序打开 sg 文件描述符时,SCSI 设备可以被分离。这方面的一个例子是“热插拔”设备,例如刚拔下的 USB 大容量存储设备。大多数后续尝试访问已分离 SCSI 设备的系统调用将产生 ENODEV。close() 调用将静默完成,而 poll() 调用将在其结果中“或”入 POLLHUP。随后尝试 open() 该设备名称将产生 ENODEV。