Flags überprüfen
-
hi wieder,
hab folgendes Problem: Ich habe ein struct, in dem ein _mode_t typ ist, der die Flags eines Pfades beinhaltet.Folgende Flags sind für das st_mode-Feld definiert:
S_IFMT 0017000 Bitmaske für die Dateityp-Bitfelder
S_IFSOCK 0140000 Socket
S_IFLNK 0120000 symbolische Verknüpfung
...Weis jemand wie ich überprüfen kann, ob ein Flag gesetzt ist, bzw mir alle gesetzten Flags ausgeben lassen kann?
-
Du solltest dir mal die Bit-Operatoren & (UND), | (ODER), ^ (XOR), ~ (NICHT) ansehen - und damit deine Flag-Sammlung passend zerlegen.
mode&mask -> alle Flags aus "mask", die in mode gesetzt sind
mode&flag!=0 -> ist der Wert "flag" gesetzt?mode|=flag -> setze "flag"
mode&=~flag -> lösche "flag"...
-
Hi nochmal, irgendwie komme ihc mit den Flags nicht ganz zurecht. Ich habe es nach deinem Vorschlag probiert:
cout<<(buf.st_mode&S_IFDIR)<<endl;
und auch nach einem Abschnitt im Internet, welcher meinte:
FLAG1 = mode & FL_1
würde FLAG1 den Wert von FL_1 zuweisen. Deshalb dachte ich, muss mode & FL_1 ja den Wert zurückgeben(wie dus auch geschrieben hast (!=0) ).
Warum klappt nun aber der Befehl oben nicht? Als Fehler? kam:
Stopped due to shared library event
Hmm, was nun?
-
hat sich erledigt. Ich habe eine Seite gefunden, die Flags super erkärt:
http://www.willemer.de/informatik/cpp/sysprog.htmDanke an alle