• Domingo 15 de Diciembre de 2024, 20:58

Autor Tema:  Sacar memoria y disco libre - Linux  (Leído 2405 veces)

Locoarts3113

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Sacar memoria y disco libre - Linux
« en: Domingo 24 de Octubre de 2010, 00:17 »
0
Hola gente,

estoy trabajndo en C y necesitaria SOLAMENTE obtener los datos de la memoria  y disco libre que tengo en el sistema operativo DEBIAN (linux).
La verdad estuve buscando un monton en internet y no encontre nada al respecto...espero de su gran ayuda!!
Estuve viendo la funcion getrusage pero no la entendi ni un poco.

GRACIAS
« última modificación: Lunes 25 de Octubre de 2010, 02:03 por Locoarts3113 »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Obtener memoria y disco libre
« Respuesta #1 en: Domingo 24 de Octubre de 2010, 20:18 »
0
El fichero /proc/meminfo tiene la información sobre la memoria. Sólo tienes que buscar la que te interesa (un parseo muy sencillo).

Para el espacio en disco, statvfs() (mira la página del manual).

Locoarts3113

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Obtener memoria y disco libre
« Respuesta #2 en: Lunes 25 de Octubre de 2010, 01:55 »
0
Cita de: "m0skit0"
El fichero /proc/meminfo tiene la información sobre la memoria. Sólo tienes que buscar la que te interesa (un parseo muy sencillo).

Para el espacio en disco, statvfs() (mira la página del manual).

No me dejan utilizar parseo para obtener los datos, tengo que usar alguna funcion u otra cosa..

Gracias igual

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Sacar memoria y disco libre - Linux
« Respuesta #3 en: Lunes 25 de Octubre de 2010, 09:08 »
0
Cita de: "Locoarts3113"
No me dejan utilizar parseo para obtener los datos, tengo que usar alguna funcion u otra cosa..
Como te digo, para el espacio en disco, tienes statvfs. Que yo sepa no hay ninguna llamada al sistema que te devuelva la memoria libre en todo el sistema, así que tendrás que usar otro mecanismo (como mirar en /proc/meminfo, o llamar a utilidades como free o vmstat a través de system() -que al fin y al cabo lo que hacen estas utilidades es mirar en /proc/meminfo-. Y no veo por qué no puedes mirar en /proc/meminfo puesto que para eso está  <_<

También existen formas más cutres como intentar reservar memoria cada vez más grande hasta que el sistema devuelva error (en un bucle). Esto es una solución muchísimo peor.

Locoarts3113

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sacar memoria y disco libre - Linux
« Respuesta #4 en: Lunes 25 de Octubre de 2010, 16:15 »
0
Cita de: "m0skit0"
Cita de: "Locoarts3113"
No me dejan utilizar parseo para obtener los datos, tengo que usar alguna funcion u otra cosa..
Como te digo, para el espacio en disco, tienes statvfs. Que yo sepa no hay ninguna llamada al sistema que te devuelva la memoria libre en todo el sistema, así que tendrás que usar otro mecanismo (como mirar en /proc/meminfo, o llamar a utilidades como free o vmstat a través de system() -que al fin y al cabo lo que hacen estas utilidades es mirar en /proc/meminfo-. Y no veo por qué no puedes mirar en /proc/meminfo puesto que para eso está  <_<

También existen formas más cutres como intentar reservar memoria cada vez más grande hasta que el sistema devuelva error (en un bucle). Esto es una solución muchísimo peor.

Lo que yo necesito hacer es un programa en C que me devuelva la memoria libre en ese momento. Ejemplo:

int main() {
...
funcion_memoria_libre()
..}

y que me devuelva ponele: 512mb


GRACIAS

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Sacar memoria y disco libre - Linux
« Respuesta #5 en: Lunes 25 de Octubre de 2010, 16:20 »
0
Ya te entendí y como te digo que yo sepa, no hay dicha función. Te creas tu función y haces el parseo dentro.

Código: C
  1. funcion_memoria_libre()
  2. {
  3.      //Mira dentro de /proc/meminfo
  4. }
  5.  
Como te digo, que yo sepa Linux (y POSIX) no tienen una llamada de ese tipo. A lo mejor otro te puede ayudar.

Locoarts3113

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sacar memoria y disco libre - Linux
« Respuesta #6 en: Lunes 25 de Octubre de 2010, 17:09 »
0
Cita de: "m0skit0"
Ya te entendí y como te digo que yo sepa, no hay dicha función. Te creas tu función y haces el parseo dentro.

Código: C
  1. funcion_memoria_libre()
  2. {
  3.      //Mira dentro de /proc/meminfo
  4. }
  5.  
Como te digo, que yo sepa Linux (y POSIX) no tienen una llamada de ese tipo. A lo mejor otro te puede ayudar.

Me falta alguna llamada al sistema que me devuelva SOLAMENTE el espacio en disco libre...
Graciaas,  ya se como hacer lo de la memoria libre:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
int system(const char* command);
system("vmstat 1 2 | sed -n '$ p' | awk '{print $4}'");
}

Saluuudos!!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Sacar memoria y disco libre - Linux
« Respuesta #7 en: Lunes 25 de Octubre de 2010, 17:31 »
0
Yo no sé si realmente lees lo que te pongo, así que ésta es la última vez que te respondo:

Cita de: "Locoarts3113"
system("vmstat 1 2 | sed -n '$ p' | awk '{print $4}'");
Cita de: "m0skit0"
llamar a utilidades como free o vmstat a través de system() -que al fin y al cabo lo que hacen estas utilidades es mirar en /proc/meminfo-

Cita de: "Locoarts3113"
Me falta alguna llamada al sistema que me devuelva SOLAMENTE el espacio en disco libre...
Cita de: "m0skit0"
Para el espacio en disco, statvfs() (mira la página del manual).

Locoarts3113

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sacar memoria y disco libre - Linux
« Respuesta #8 en: Lunes 25 de Octubre de 2010, 17:32 »
0
Cita de: "m0skit0"
Yo no sé si realmente lees lo que te pongo, así que ésta es la última vez que te respondo:

Cita de: "Locoarts3113"
system("vmstat 1 2 | sed -n '$ p' | awk '{print $4}'");
Cita de: "m0skit0"
llamar a utilidades como free o vmstat a través de system() -que al fin y al cabo lo que hacen estas utilidades es mirar en /proc/meminfo-

Cita de: "Locoarts3113"
Me falta alguna llamada al sistema que me devuelva SOLAMENTE el espacio en disco libre...
Cita de: "m0skit0"
Para el espacio en disco, statvfs() (mira la página del manual).

SOLUCIONADOOO, GRACIAS A TODOS

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Sacar memoria y disco libre - Linux
« Respuesta #9 en: Martes 26 de Octubre de 2010, 17:18 »
0
Para el caso de la memoria libre, yo uso free para tomar en cuenta la que está siendo usada para caché.
La imaginación es el límite.
Hardware & Software | Mexchip