本章讨论了可用于 sg 设备的系统调用。ioctl() 系统调用将在下一章中讨论 [ 参见 第 8 章 ]。
成功打开 sg 设备文件名(例如/dev/sg0)在文件描述符和连接的 SCSI 设备之间建立链接。sg 驱动程序在 SCSI 设备(例如,独占锁)和文件描述符(例如,保留缓冲区)级别维护状态信息和资源。
当应用程序打开 sg 文件描述符时,SCSI 设备可以被分离。这方面的一个例子是“热插拔”设备,例如刚拔下的 USB 大容量存储设备。大多数后续尝试访问已分离 SCSI 设备的系统调用将产生 ENODEV。close() 调用将静默完成,而 poll() 调用将在其结果中“或”入 POLLHUP。随后尝试 open() 该设备名称将产生 ENODEV。