Tengo un dispositivo de unidad flash (/ dev/sda1) montado en/mnt en un sistema embebido de Linux (kernel 2.6.23). Usando C ¿cómo puedo calcular el tamaño de la unidad?¿Cómo puedo encontrar el tamaño de la unidad flash USB montada en C?
Respuesta
En Linux, si no está preocupado acerca de la portabilidad (C no sabe acerca de las unidades, por lo que cualquier código específico será no portables), utilice statfs()
:
struct statfs fsb;
if(statfs("/mnt", &fsb) == 0)
printf("device has %ld blocks, each %ld bytes\n", fsb.f_blocks, fsb.f_bsize);
Si no tiene ningún problema en el uso de herramientas externas, exec esto:
df -h | grep -i /dev/sda1
usando popen, y analizar la línea resultante con strtok.
Estoy tratando de evitar hacer algo como eso. La aplicación se ejecuta en una plataforma incrustada y requeriría demasiados recursos para hacer lo anterior. – Andrew
'-h' probablemente no sea necesario porque la entrada se leerá por programa. '-i' también es redundante debido a la distinción entre mayúsculas y minúsculas. Aparte de eso, una buena solución conforme a LSB (es decir, portátil). –
leer y analizar una serie de entrada sysfs del dispositivo. En su caso,
- dispositivo completo (todas las particiones y la tabla de particiones):
/sys/block/sda/size
- partición lógica en este dispositivo:
/sys/block/sda/sda1/size
El dispositivo no tiene que ser montado todavía.
- 1. Detectar unidad extraíble (por ejemplo, unidad flash USB) C/C++
- 2. cómo determinar el fabricante de la unidad flash USB?
- 3. Android: Detecta una unidad flash USB conectada
- 4. Diferenciación programática entre unidad de disquete USB y unidad flash USB en Windows
- 5. ¿Cómo puedo determinar si un dispositivo USB conectado es una unidad flash USB?
- 6. ¿Cómo registrar la unidad recientemente montada en git bash?
- 7. ¿Cómo puedo obtener VID/PID desde unidades flash USB en C#?
- 8. Escritura de aplicaciones portátiles de unidad USB en C#
- 9. Buscando código C# para la detección de unidad extraíble (flash USB)
- 10. Diferenciar entre unidad flash USB y disco duro USB en Windows
- 11. Número de serie de la unidad USB en Linux C++
- 12. cómo encontrar el tamaño de la matriz 2d en C++
- 13. ¿Cómo puedo encontrar el tamaño/dimensiones naturales de un archivo SWF de Flash?
- 14. ¿Cómo saber si la tarjeta SD está montada en Android?
- 15. Detectar unidad USB en Java
- 16. ¿Cómo realizar IO de bajo nivel con una unidad flash USB en el BIOS (en comparación con un disquete)?
- 17. ¿Puedo instalar SQL Server en una unidad USB?
- 18. ¿Cómo puedo determinar si una letra de unidad determinada es una unidad local, asignada o USB?
- 19. ¿Cómo puedo encontrar el tamaño de una estructura?
- 20. Cómo encontrar el tamaño de una clase en C#
- 21. Portable PostgreSQL para el desarrollo de una unidad usb
- 22. Como llegar Red tamaño de la unidad en C# (sin "mapa de la unidad")
- 23. ¿Cómo puedo ver el tamaño de la unidad de asignación de una partición NTFS en Vista?
- 24. aplicación de .NET Framework 4.0 desde la unidad USB
- 25. ¿Cómo puedo encontrar el tamaño máximo de pila?
- 26. ¿Cómo puedo encontrar el tamaño de una matriz 2D?
- 27. ¿Puedo raspar el flash?
- 28. ¿Cómo escribir un controlador usb simple?
- 29. ¿Cómo volver a detectar una memoria flash USB por software?
- 30. Control de versión en una unidad USB de 2GB
lo anterior funciona si la ruta pasada a statfs es "/ mnt" – Andrew