Как увеличить время безотказной работы системы в Linux с помощью C ++?

Я знаю, есть два пути

  1. вызов функции sysinfo
  2. / proc / время безотказной работы

Я думаю, что sysinfo получает время безотказной работы из / proc / uptime. Но проблема в том, что если пользователь выходит из системы и снова входит в систему, таймер не сбрасывается. Это продолжается.

В Windows GetTickCount64 () сбрасывает таймер при выходе пользователя из системы и входе в систему. Я хочу что-то подобное в linux.

Итак, как мне узнать время, прошедшее с момента последнего входа в систему?

Спасибо

изменить: код С ++ или вызов функции api было бы лучше, вместо того, чтобы запускать процесс для вызова команды who или last


person Abel Pandian    schedule 17.09.2019    source источник
comment
Команда who?   -  person David C. Rankin    schedule 17.09.2019
comment
Вы уверены, что GetTickCount64 гарантированно покажет время с момента входа в систему? В документации ничего подобного не говорится.   -  person t.niese    schedule 17.09.2019
comment
Если вы ищете время, когда пользователь вошел в систему, это то, что делает who. Страница руководства немного скудна. Может потребоваться найти info страницу.   -  person David C. Rankin    schedule 17.09.2019
comment
@ t.niese я тестировал его вручную, и он сбрасывает его.   -  person Abel Pandian    schedule 17.09.2019
comment
См. man 5 utmp.   -  person Oliv    schedule 17.09.2019
comment
@AbelPandian, мой вопрос был в том, уверены ли вы, что это гарантированное поведение для GetTickCount64, а не в том случае, если вы проверили его вручную. Вам не следует полагаться на наблюдения, а не на то, что вам сообщает документация. А вот запись в блоге разработчика ms The purpose of Get­Tick­Count is to let you measure intervals of time. [...] applications should not ascribe any meaning to the zero point of the tick counter.   -  person t.niese    schedule 17.09.2019