カーネル:3.12.30-AM335x-PD15.2.1(PHYTECによる)ARM、電源投入後に削除されたテキストファイルの内容オフ
私のアプリケーションは、実行時にテキストファイルを編集し、それに内容を使用する必要があります次に電源を入れます。そこで私はQT C++で書いたプログラムを使って、単純なテキスト "Disable"または "Enable"を書くテキストファイルを作成しました。
私が気づいたのは、プログラムがシンプルテキストを書き込んだ後、bashで "reboot"コマンドを使用して、システムの電源を切る前にプログラムを再起動するのを待ちます。 「cat TextFile.txt」コマンドは、プログラムが最後に正しく書き込まれたかどうかを「有効」または「無効」にします。
再起動せずにシステムをすぐに電源を切ってからもう一度電源を入れると、テキストファイルは残りますが内容は削除されるので、 "cat TextFile.txt"は何も表示されません。
私は、以下の方法を使用して、手動で同じことを実行しようとしました:
方法1:
echo Disable > TextFile.txt
reboot
.....wait for it to reboot
cat TextFile.txt
The results is "Disable".
方法2:
echo Disable > TextFile.txt
.. power off by plugging off the cable
.. power on the system
cat TextFile.txt
No resulting text..
私は単純にする必要がありますする必要はありませんシステムをリブートして、ファイルを保存します。ですから、QT C++プログラム内でコマンドを実行して再起動せずにすべてを保存することに満足しています。しかし、私はオペレーティングシステムをよく知っていないので、私はこれを行うことができるようにする必要があるのか分かりません。
これは、方法によって、私のコードの私です:シェル上ごexperiementが、これは厳密にはC++やQtの物ではないことが示されていたよう
QFile file(filename);
// Trying to open in WriteOnly and Text mode
if(!file.open(QFile::WriteOnly |
QFile::Text))
{
qDebug() << " Could not open file for writing";
}
// To write text, we use operator<<(),
// which is overloaded to take
// a QTextStream on the left
// and data types (including QString) on the right
QTextStream out(&file);
out << "Enable";
file.flush();
file.close();
コンピュータでプラグを引っ張ってもデータが失われることは驚くべきことではありません。 Linuxの使い方では、再起動は基本的には非常に高価な['sync'](http://man7.org/linux/man-pages/man1/sync.1.html)を実行する方法です。 – Notlikethat