Datei anlegen unter Solaris
-
Tachchen,
ich hoffe, ich bin jetzt im richtigen Forum.
Folgender Codeschnipsel funktioniert unter Win NT, unter Solaris allerdings leider nicht:ofstream Log; Log.open("Log.txt", ios::app); if(Log) { Log << "Testzeile\n"; } Log.close();
Die Rechte fürs Verzeichnis habe ich auf 777 gesetzt. Daran sollte es also nicht liegen. Jemand ne Idee?
-
Was genau funktioniert denn nicht?
Das hier ist gültiges Standard-C++ und sollte an sich auch unter Solaris laufen.
#include <fstream> using namespace std; int main() { ofstream Log; Log.open("Log.txt", ios::app); if(Log) { Log << "Testzeile\n"; } Log.close(); }
Funktioniert unter GNU/Linux wunderbar.
Vielleicht solltest Du den Pfad absolut angeben, wenn Du die Datei nicht im cwd des Programms anlegen möchtest.
-
Mein Code ist identisch.
Kompiliert wird ohne Fehler. Beim Ausführen kann er die Datei nicht anlegen.
Ich habe jetzt vor den Pfad mal ein ./ gesetzt. Damit klappt einlesen aber das schreiben nicht. Am Pfad sollte es also nicht liegen.
Open gibt ja leider nur true oder flase zurück. Gibts ne Möglichkeit, an eine aussagekräftige Fehlermeldung zu kommen?
-
Mach mal ein "strace -e open ./deinProgramm", dann kannst Du sagen, woran es scheitert.
-
ERROR: unable to open /dev/log
Der konnte wegen falschen Rechten nicht in die Logdatei schreiben. Rechte umgesetzt, jetzt bin ich beim nächsten Fehler ("Segmentation Fault (core dumped)"), der aber wohl an meinem Progrämmchen liegt.
Besten Dank für die Hilfe!!!