Время работы в соответствии с Linux в C

Как я могу получить время работы в соответствии с Linux с помощью C? (не используя popen и/или/proc)

Спасибо

11
задан drizzt 18 June 2010 в 14:07
поделиться

3 ответа

Через вверху или через время безотказной работы , но Я не знаю ни о каком системном вызове, кто-то точно узнает :)

uptime должно быть довольно легко проанализировать.

Только что наткнулся на это:

#include <sys/sysinfo.h>

struct sysinfo info;
sysinfo(&info);
printf("Uptime = %ld\n", info.uptime);
21
ответ дан 3 December 2019 в 04:31
поделиться

Чтобы получить время запуска системы более переносимым способом, можно использовать «who -b». Чтобы использовать это в программе, вам нужно создать оболочку и интерпретировать ее вывод. К сожалению, это единственное место, где такая информация доступна в POSIX, и это тоже только как расширение.

1
ответ дан 3 December 2019 в 04:31
поделиться

Если он там и содержит элемент uptime , struct sysinfo является предпочтительным способом, как объяснил Джек .

Другой способ - прочитать btime из / proc / stat , а затем просто вычесть его из текущего времени. btime - это просто эпоха UNIX, указывающая, когда загружалось ядро.

Это дает вам количество секунд с момента загрузки, которое затем можно перевести в годы / месяцы / дни / часы / и т. Д. Это избавляет от необходимости иметь дело со строками в / proc / uptime . Если btime там нет, а struct sysinfo не имеет члена с именем uptime , вам необходимо проанализировать / proc / uptime .

Для современных ядер sysinfo () должна работать нормально. Большинство вещей, которые все еще работают под управлением 2.4 (или более ранней версии), представляют собой устройства того или иного типа встраиваемых систем.

2
ответ дан 3 December 2019 в 04:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: