Aktywne Wpisy

mmm_MMM +19
Igrzyska Olimpijskie 2030 odbędą się we Francji, jednak z powodu braku odpowiedniego, nowoczesnego toru łyżwiarskiego oraz chęci uniknięcia kosztownej budowy nowego obiektu, konkurencje w łyżwiarstwie szybkim zostaną rozegrane poza krajem gospodarzem. Organizatorzy rozważają dwa główne ośrodki, które posiadają już odpowiednie tory: Turyn (Włochy) lub Heerenveen (Holandia).
#mediolan2026
#mediolan2026
źródło: obraz
Pobierz
tomwick55 +13
Mileta Rajović - defensywny napastnik Legii Warszawa
Czas gry w dzisiejszym meczu: 90min
Gole: 0
Asysty: 0
Strzały: 1
Czas gry w dzisiejszym meczu: 90min
Gole: 0
Asysty: 0
Strzały: 1
źródło: 1000028040
Pobierz




Potrzebuję w programie napisanym w języku C wykryć że karta pamięci się zyebała. Mówiąc prościej wykryć kiedy została zamontowana w trybie read only.
Próbowałem za pomocą takiej funkcji:
https://linux.die.net/man/2/statvfs
int statvfs(const char *path, struct statvfs *buf);W uzyskanej strukturze jest pole unsigned long fflag
i sprawdzając flagę STRDONLY nic się nie dzieje. tzn taki kod:
struct statvfs vfs;statvfs("/dev/mmcblk0p1", &vfs);if(vfs.f_flag & ST_RDONLY != 0) {perror("SDcard read only!");
}
Nie zgłasza mi błędu mimo że w /proc/mounts mam kartę zamontowaną tak(read only):
/dev/mmcblk0p1 /mnt/sdcard vfat ro,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro 0 0Ma ktoś jakieś z tym doświadczenia? Albo pomysły?
@QBA__: Jesteś pewien, że chcesz tu użyć koniunkcji bitowej, a nie logicznej?
Dobra. Już mam. Jak podam ścieżkę do urządzenia czyli /dev/mmcblk0p1 to zawsze zwróci mi to samo czyli ta flaga nie będzie ustawiona.
Jak podam ścieżkę montowania czyli /mnt/sdcard to działa tak jak powinno. Czyli wypisuje błąd jeśli pliki na karcie
Przy okazji ciekawa rzecz na przyszłość.
W zależności od tego czy to duży desktopowy Linux - tam jest automatyczna obsługa wielu typów systemu plików będzie to polecenie:
-a to opcja automatycznej naprawy.
Najpierw odmontuj kartę poleceniem umount.
Wiec zwraca ci parametry zamontowania /dev (lub /).