Если я хочу создать графический интерфейс, который отображает точно те же данные, что и команда TOP в LINUX, откуда я получу данные?

Я узнал, что я могу получить PID (первый столбец) из файла / proc / [pid] / stat, первого столбца. Я не уверен, где можно найти остальные атрибуты. И я предполагаю, что нам нужно вычислить% CPU и% MEM из некоторых других атрибутов. Может кто-нибудь, пожалуйста, помогите мне с этим? Мой графический интерфейс должен выглядеть точно как верх. Я использую Python3 и ttk для графического интерфейса.

Если вы наберете:

strace -o outfile top 

он будет работать как обычно, пока отслеживает все системные вызовы, которые он делает, и помещает результат в outfile . Открываемые файлы отображаются в виде вызовов open(2) системного вызова. После этого вы должны быстро выйти из него, так как он будет хранить множество данных и всего лишь несколько секунд, чтобы рассказать вам, что он читает.

Выполняя это быстро в моей собственной системе, большинство из этих данных поступает из /proc/<pid>/stat , /proc/<pid>/status и /proc/<pid>/statm . Некоторые поиски и эксперименты должны позволять вам определять их форматы.

man 5 proc имеет много хороших деталей, что вы можете найти в своей файловой системе proc.

Библиотека procps – это в основном куча вещей, которые читают файлы в этой файловой системе, анализируют их и устанавливают переменные или структуры в зависимости от того, что она находит. Как правило, ответ «почему ps / top и т. Д. Показывает значение X» «потому что это то, что было в файле Z»,

Мы активно перерабатываем библиотеку libproc / libprocps / libwhatwillwecallitnext procps, чтобы сделать ее более похожей на обычную библиотеку.

В настоящее время будут только привязки C (потому что они нам нужны), но, возможно, в будущем могут быть и другие. API должен сначала оформиться, и нам нужно будет найти новую библиотеку и увидеть, как она работает в реальном мире, но тогда мы можем это рассмотреть.

Глядя на главный источник – это еще одна идея, проблема в том, что если вы сворачиваете свои собственные, вам нужно отслеживать все вещи, которые делают люди ядра, для procfs, а с библиотекой – наша головная боль.