¿Cómo puedo recuperar el tiempo de actividad en Linux usando C? (Sin utilizar popen y/o/proc)Uptime en Linux en C
Gracias
¿Cómo puedo recuperar el tiempo de actividad en Linux usando C? (Sin utilizar popen y/o/proc)Uptime en Linux en C
Gracias
Via top
o mediante uptime
, pero no sé acerca de cualquier llamada al sistema, alguien va a ciencia cierta :)
uptime
debería ser bastante fácil analizar.
tropezado este:
#include <sys/sysinfo.h>
struct sysinfo info;
sysinfo(&info);
printf("Uptime = %ld\n", info.uptime);
Si está allí y contiene el miembro uptime
, struct sysinfo
es la manera preferida para ir, ya Jack explained.
La otra forma es leer btime
de /proc/stat
, luego restarlo de la hora actual. btime
es solo una época UNIX que indica cuándo arrancó el kernel.
Eso le da el n. ° de segundos desde el arranque, que luego puede traducir en años/meses/días/horas/etc. Esto ahorra tener que lidiar con cadenas en /proc/uptime
. Si btime
no está allí, y struct sysinfo
no tiene ningún miembro llamado uptime
, debe analizar /proc/uptime
. Para los núcleos modernos, sysinfo()
debería funcionar bien. La mayoría de las cosas que siguen funcionando 2.4 (o antes) en la naturaleza son dispositivos de algún tipo u otros sistemas integrados.
Para obtener la hora de inicio del sistema de una manera más portátil, sería usar "who -b". Para usar esto en un programa, debería generar un intérprete de comandos e interpretar su resultado. Desafortunadamente, este parece ser el único lugar donde dicha información está disponible en POSIX, y esto también solo como una extensión.
Horror para sysinfo() :) NB: 'struct sysinfo' es bastante 'furtivo' entre 2.4 (principios) 2.4 (tarde) y 2.6. Si es probable que su código se use para dispositivos, es útil ejecutar comprobaciones de compilación para ver qué miembros pueden ser diferentes. –
printf ("Tiempo de actividad:% 02ld:% 02ld:% 02ld \ n", info.uptime/3600, info.uptime% 3600/60, info.uptime% 60); –
Sin embargo, '' no parece existir cuando está compilando el kernel (vagabundo y trusty64):/¿Cómo hacer en esa situación? –
Emixam23