Linux下 C语言 读写 块设备文件 问题

系统是ubuntu,当u盘插入的时候 ,系统会在/dev 目录下面多出一个 scsi 设备文件,
类似于 /dev/sdb 像这种块设备文件。

我用c语言识别它是U盘,并且用linux C open(),write(),read(),函数读写 /dev/sdb,大致情况
就是在前512个字节上写上自己的秘钥,以此来标记这个U盘。

可是 三个U盘按顺序 写上不同的秘钥(key001,key002),热插拔之后再读取的时候,其中一个U盘里面的秘钥没有读出来,有时候还会秘钥错乱。

我不知道是我的用的方法不对还是不能这样做,网上说可以用ioctl 函数来操作。但是都很模糊。。。我已经懵逼了现在。。。。在线等 有点急!!

会不会更别的已经冲突了

已经冲突? 我现在理解是这样 当第二块磁盘插入电脑中 linux 会分配/dev/sdb设备文件给这个u盘 再同时来一个U盘 就会分盘/dev/sdc
,以此类推sdd、sde.....。不过,当第一块U盘插过再拔出来时候,再插另外一块u盘 ,这还是sdb,这是合理的分配,因为第一块U盘已经离开了,sdb文件资源相当于释放了,然后第二块u盘就会占用sdb,你是不是说这里已经冲突了。。。。 如果是这里冲突,我更不知道怎么办了。那这样更不好解决了啊。。
。。。其实吧 我就想在这个U盘插入的时候做一个唯一的标记,但是用write()写入sdb不知道对不对,同时也很模糊sdb里面的内容是什么,到底是不是磁盘空间。