Kernel: 3.12.30-AM335x-PD15.2.1 (von PHYTEC)ARM Embedded Linux (AM335x), Textdatei Inhalt gelöscht, nachdem Power Off
Meine Anwendung erfordert Bearbeiten einer Textdatei auf Laufzeit und die Verwendung dieser Inhalte Beim nächsten Mal wird es eingeschaltet. Also habe ich eine Textdatei erstellt, in der ich einen einfachen Text schreibe, "Disable" oder "Enable" mit dem Programm, das ich mit QT C++ geschrieben habe.
Was ich festgestellt habe, ist, nachdem das Programm schreibt den einfachen Text, wenn ich den Befehl "reboot" auf bash, und warten auf das Programm neu starten, bevor ich das System ausschalten (durch das Abstecken des Kabels), Der Befehl "cat TextFile.txt" gibt "Enable" oder "Disable" aus, je nachdem, was das Programm zuletzt korrekt geschrieben hat.
Wenn ich jedoch keinen Neustart und das System sofort ausschalten und dann wieder einschalten, bleibt die Textdatei, aber der Inhalt wird gelöscht, so dass "cat TextFile.txt" nichts ergibt.
Ich habe versucht, die gleiche manuell zu tun, die folgenden Methoden verwenden:
Methode 1:
echo Disable > TextFile.txt
reboot
.....wait for it to reboot
cat TextFile.txt
The results is "Disable".
Methode 2:
echo Disable > TextFile.txt
.. power off by plugging off the cable
.. power on the system
cat TextFile.txt
No resulting text..
Ich möchte einfach nicht haben Starten Sie das System neu, um die Dateien zu speichern. Also würde ich mit der Ausführung von Befehlen in meinem QT C++ Programm zufrieden sein, um alles ohne Neustart zu speichern; aber ich kenne das Betriebssystem nicht sehr gut, daher weiß ich nicht, was ich tun soll, um das zu können.
Dies ist mein Code meines durch die Art und Weise:
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();
Das Ziehen des Steckers an einem Computer, was zu Datenverlust führt, sollte nicht überraschen. In Bezug auf die Verwendung von Linux ist der Neustart eine sehr teure Art, ['sync'] auszuführen (http://man7.org/linux/man-pages/man1/sync.1.html). – Notlikethat