Mam napęd dysków flash (/ dev/sda1) podłączony do/mnt na wbudowanym systemie Linux (jądro 2.6.23). Przy użyciu C jak obliczyć rozmiar dysku?Jak znaleźć rozmiar zamontowanego napędu flash USB w C?
Odpowiedz
W systemie Linux, jeśli nie martwisz się o przenośności (C nie wiedzieć o dyskach, więc każdy taki specyficzny kod będzie nieprzenośne), użyj statfs()
:
struct statfs fsb;
if(statfs("/mnt", &fsb) == 0)
printf("device has %ld blocks, each %ld bytes\n", fsb.f_blocks, fsb.f_bsize);
Jeśli nie masz problemu przy użyciu zewnętrznych narzędzi, exec to:
df -h | grep -i /dev/sda1
użyciu popen i zanalizować wiersz wynikowy z strtok.
Próbuję uniknąć robienia czegoś takiego. Aplikacja działa na osadzonej platformie i wymagałaby zbyt dużej ilości zasobów, aby wykonać powyższe czynności. – Andrew
'-h' jest prawdopodobnie niepotrzebne, ponieważ dane wejściowe będą odczytywane przez program. '-i' jest także nadmiarowe ze względu na rozróżnianie wielkości liter. Poza tym - dobre rozwiązanie zgodne z LSB (tj. Przenośne). –
przeczytać i przeanalizować liczbę w wpis urządzenia sysfs. W twoim przypadku,
- Pełna urządzenia (wszystkich partycji i tablicy partycji):
/sys/block/sda/size
- partycja logiczna na tym urządzeniu:
/sys/block/sda/sda1/size
Urządzenie nie musi być jeszcze montowane.
- 1. Jak zdobyć rozmiar dysku sieciowego w C# (bez „Mapa napędu”)
- 2. USBHost USB flash drive
- 3. Jak określić, czy podłączone urządzenie USB jest dyskiem flash USB?
- 4. jak znaleźć rozmiar tablicy 2d w C++
- 5. Jak uzyskać numer seryjny pamięci USB w języku C#
- 6. Jak ponownie wykryć pamięć flash USB przez oprogramowanie?
- 7. Jak mogę odczytać dane z pamięci flash USB?
- 8. Biblioteka USB w C++
- 9. Jak mogę znaleźć rozmiar RDD
- 10. Jak znaleźć rozmiar pliku HDFS
- 11. Jak znaleźć rozmiar obiektu Iterable?
- 12. Git bash nie może zidentyfikować dysków flash USB
- 13. Flash przesłać obraz rozmiar strony klienta
- 14. Jak znaleźć rozmiar tablicy w postgresql
- 15. Jak znaleźć rozmiar pliku w scala?
- 16. Jakie parametry muszę przekazać w kontrolerze do zamontowanego modelu Carrierwave?
- 17. Program Flash Builder nie może znaleźć wymaganej wersji odtwarzacza Adobe Flash Player w wersji
- 18. Jak mogę uruchomić urządzenie USB z C#?
- 19. Znaleźć rozmiar ciągu w argv używając sizeof
- 20. Wykrywanie włożenia nośnika do napędu za pomocą komunikatów systemu Windows
- 21. Dostęp USB lub szeregowy w C#
- 22. Jak znaleźć i włączyć tryb debugowania USB na Nexusie 4
- 23. C# wykryj urządzenie USB ClassCode (typ urządzenia USB)
- 24. Jak znaleźć rozmiar statycznych przydziałów z binarnego?
- 25. Jak znaleźć rozmiar bufora gniazda linux
- 26. Jak zastąpić MeasureOverride, aby znaleźć rozmiar ItemsControl
- 27. USB HID wisi na Odczyt() w C#
- 28. Jak uzyskać rozmiar kursora w C#
- 29. Jak uzyskać rozmiar pliku w C#?
- 30. Instalacja .NET Framework 4.0, zmiana napędu
powyższe działa, jeśli ścieżka przekazana do statfs to "/ mnt" – Andrew