今天看到《Linux网络编程》那本书的一个光驱弹出的程序,我记得在很早很早的时候,有人就写过不断自动弹出和自动关闭光驱的程序,当时还吓倒不少网民。
其实学过驱动或者学过高级编程的人写这样的程序都很简单,经过我的验证,《Linux网络编程》这本书的例子是有点小问题的,open里面缺少一个O_NONBLOCK。
否则打开会返回失败,errno的为123,查看/usr/include/asm-generic/errno.h发现错误是#define ENOMEDIUM 123 /* No medium found */,或者调用perror也可以找到具体失败的原因。
加上O_NONBLOCK选项后程序工作正常,具体原因我过几天看下CDROM的驱动程序再分析下。