Если он там и содержит член uptime
, struct sysinfo
является предпочтительным способом, как объяснил Джек .
Другой способ - прочитать btime
из /proc/stat
, а затем просто вычесть его из текущего времени. btime
- это просто эпоха UNIX, указывающая, когда загружается ядро.
Это дает вам # секунд с момента загрузки, которые затем можно преобразовать в годы / месяцы / дни / часы / и т. Д. Это избавляет от необходимости иметь дело со строками в /proc/uptime
. Если btime
там нет, а struct sysinfo
не имеет члена с именем uptime
, вам нужно проанализировать /proc/uptime
.
Для современных ядер sysinfo()
должно работать просто отлично. Большинство вещей, все еще работающих в 2.4 (или более ранних версиях), являются устройствами какого-то рода или другими встроенными системами.