0

シングル ボード コンピューターから 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

私の問題は、このプログラムが実行される時間であるため、フラッシュドライブを挿入した時間に依存していることです。デバイスを開く時間を必要としないようにするにはどうすればよいですか?

4

1 に答える 1

0

日付/時刻はマウントとは何の関係もないと思われます。ほとんどの場合、フラッシュドライブは /mnt にマウントされています

日付と時刻は、マウントされたファイルシステムに書き込むファイルの名前を組み立てるために使用されています。これを定期的に行う場合、ファイル名にある種のタイムスタンプを入れるのは実際にはかなり一般的な方法です。誤って失われたり、ファイルが別のシステムに移動した場合に、ファイルシステムの日付フィールドよりも見やすく、信頼性が高くなります。または分析される前の記憶媒体。

ここで問題が発生する必要はないようです。そのスタイルでファイルを作成したい場合は、現在のコードを使用してください (少なくとも、コメントを現在の内容に更新することをお勧めします。これは、コメントが記述されたバージョンでの内容とは異なるように見えます)。 . 別の時不変の名前でファイルを作成したい場合は、そうしてください。

フラッシュ ドライブが自動的にマウントされていない可能性があります (おそらく、期待されるファイル システムがないか、これを処理するはずのデーモンが動作していません)。その場合もあるかもしれませんが、投稿したコードはマウントまたはマウントの失敗には関与していません。代わりに、おそらく既にマウントされているファイルシステムに書き込みを試みるか、マウントポイントとして使用されるはずだった親ファイルシステムのディレクトリに失敗するコードです...

于 2012-05-05T05:51:12.043 に答える