我继承了一个将数据从单板计算机记录到usb闪存驱动器的项目。执行此操作的代码是用C语言编写的。旧代码是:
//Get the Start time
sttime = localtime(&starttime);
//Get the name of the drive
sprintf(fname,"/mnt/SJ-HMIData%.4i%.2i%.2i%.2i%.2i%.2i.sjrd",(*sttime).tm_year+1900,(*sttime).tm_mon+1,(*sttime).tm_mday,(*sttime).tm_hour,(*sttime).tm_min,(*sttime).tm_sec);
//Open an IO port with read only
UsbFile = open(fname, O_CREAT|O_WRONLY|O_TRUNC);//Open csv on flash drive to be appended
我的问题是,这取决于我插入闪存驱动器的时间,因为这个程序运行的时间。我该如何制作它以便我不需要时间打开设备?
答案 0 :(得分:0)
我怀疑日期/时间与安装无关。很可能闪存驱动器正安装在/ mnt
日期和时间用于汇总要在已安装文件系统上写入的文件的名称。如果你定期这样做,实际上很常见的做法是在文件名中加入某种时间戳 - 它比文件系统日期字段更方便查看,更可靠,可能会意外丢失或者文件被移动到另一个系统或者在分析之前的存储介质。
实际上你似乎不应该在这里遇到问题。如果你想用这种风格制作一个文件,那么请使用当前的代码(最好至少将注释更新为现在的注释,这看起来与它们编写的版本不同) 。如果要使用不同的时间不变名称创建文件,请执行此操作。
也许你的闪存驱动器没有自动挂载(也许它上面没有预期的文件系统,或者一些应该处理这个问题的守护进程无效)。很可能就是这种情况,但您发布的代码不涉及安装或无法安装。相反,它的代码试图写入可能已安装的文件系统,或者将其失败,写入应该用作挂载点的父文件系统的目录...