MiJ*_*Jyn 7 c c++ linux cd-drive
我正在制作一个应用程序,需要知道CD驱动器是打开还是关闭.
eject 打开CD驱动器,并检查打开所需的时间(更短的时间说它打开,更长,好......),但我不能使用这种技术,因为应用程序实际打开驱动器(和我如果驱动器关闭,不想重新打开驱动器,如果驱动器打开,我也不想关闭它.
我怎么在linux上这样做?我看到可以在Windows下执行此操作(虽然可能是错误的),但我还没有看到在linux上执行此操作的方法.
如果使用linux API调用是不可能的,是否可以实现可以执行此操作的低级函数?
您可以使用CDROM_DRIVE_STATUSioctl获取托盘状态。CD 驱动器的所有 ioctl 都可以在/usr/include/linux/cdrom.h
#define CDROM_DRIVE_STATUS 0x5326 /* Get tray position, etc. */
Run Code Online (Sandbox Code Playgroud)
取自这里
int slot;
ioctl(fd, CDROM_DRIVE_STATUS, slot);
switch(slot) {
case CDS_NO_INFO: ... break;
case CDS_NO_DISC: ... break;
case CDS_TRAY_OPEN: ... break;
case CDS_DRIVE_NOT_READY: ... break;
case CDS_DISC_OK: ... break;
default: /* error */
}
Run Code Online (Sandbox Code Playgroud)
小智 6
要使示例代码有效,您应该这样做:
#include <sys/ioctl.h>
#include <linux/cdrom.h>
int result=ioctl(fd, CDROM_DRIVE_STATUS, CDSL_NONE);
switch(result) {
case CDS_NO_INFO: ... break;
case CDS_NO_DISC: ... break;
case CDS_TRAY_OPEN: ... break;
case CDS_DRIVE_NOT_READY: ... break;
case CDS_DISC_OK: ... break;
default: /* error */
}
Run Code Online (Sandbox Code Playgroud)
即结果作为ioctl()函数结果返回,而不是作为slot参数返回.
| 归档时间: |
|
| 查看次数: |
2795 次 |
| 最近记录: |