Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Отслеживание процесса в unix по имени |
Автор: zhekha 29.2.2012, 14:01 | ||
Информацию о процессах в системе такие софтинки как ps, top берут из /proc и в случае если последняя не примонтирована, то данные утилитки не работают. Хочется не зависеть от этого и получить список процессов и параметры этих процессов (интересует имя, пид, статус и виртуальная память) Нашел описание task_struct и несколько примеров вида
но никак не могу вкурить как заставить это работать и где вообще эти хидеры (sched.h, kernel.h)... Такие хидеры есть в /usr/include, но описания struct task_struct в них нету, соответственно компиллятор говорит "error: ‘for_each_task’ was not declared in this scope", хотя на task_struct не ругается... ОС Ubuntu 10.04 LTS (kernel 2.6.32-38-generic) Может кто работал с такими штуками? |
Автор: boostcoder 29.2.2012, 14:13 |
это код модуля ядра. соответственно, работать он будет только в качестве модуля ядра. |
Автор: zhekha 29.2.2012, 14:23 |
Т.е. если не модуль ядра - то только парсить /proc ? А если модуль ядра - то скомпиллировать-то его как? Второй вопрос снят - нашел (типа make -C /usr/src/linux-2.6.18 SUBDIRS=$PWD modules) |
Автор: boostcoder 29.2.2012, 14:31 |
http://forum.vingrad.ru/forum/topic-340379.html |
Автор: zhekha 29.2.2012, 14:49 |
boostcoder, спасибо! зы В очередной раз убеждаюсь, что не очень хорошо умею пользоваться поиском... :'( |
Автор: xvr 29.2.2012, 15:46 |
А может не стоит? Это всетаки будет часть ядра ОС, а в нем малейшая ошибка не только напечатает вам не то, что хотелось, но и уронит всю машину так, что мало не покажется ![]() Лучше примонтировать /proc ![]() |
Автор: tzirechnoy 29.2.2012, 18:20 |
Особо тонкие цэнители могут взять подход BSD: открывать /dev/mem (ну, в BSD вроде открывается /dev/kcore -- но у нас без /proc его нету, кажэтся), и в нём на основании знания структуры task_struct и известных символов ядра (хм. insmod ведь их откуда-то вроде получает? файлик ksyms я, опять жэ, видел)напрямую искать эту информацыю. Но да, развлечение достаточно безсмысленное, а для новичка -- и очень тяжёлое. Но развлекательное. |