![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
zhekha |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 19.10.2005 Репутация: нет Всего: нет |
Информацию о процессах в системе такие софтинки как 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) Может кто работал с такими штуками? Это сообщение отредактировал(а) zhekha - 29.2.2012, 14:03 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
это код модуля ядра. соответственно, работать он будет только в качестве модуля ядра.
|
|||
|
||||
zhekha |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 19.10.2005 Репутация: нет Всего: нет |
Т.е. если не модуль ядра - то только парсить /proc ?
А если модуль ядра - то скомпиллировать-то его как? Второй вопрос снят - нашел (типа make -C /usr/src/linux-2.6.18 SUBDIRS=$PWD modules) Это сообщение отредактировал(а) zhekha - 29.2.2012, 14:31 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
||||
|
||||
zhekha |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 19.10.2005 Репутация: нет Всего: нет |
boostcoder, спасибо!
зы В очередной раз убеждаюсь, что не очень хорошо умею пользоваться поиском... :'( |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
||||
|
||||
tzirechnoy |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
Особо тонкие цэнители могут взять подход BSD: открывать /dev/mem (ну, в BSD вроде открывается /dev/kcore -- но у нас без /proc его нету, кажэтся), и в нём на основании знания структуры task_struct и известных символов ядра (хм. insmod ведь их откуда-то вроде получает? файлик ksyms я, опять жэ, видел)напрямую искать эту информацыю.
Но да, развлечение достаточно безсмысленное, а для новичка -- и очень тяжёлое. Но развлекательное. |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Для этого нужно знать точную версию ядра, т.к. эта структура описанна только в кернельных хидерах, и из работающего Linux'а без сорцов ее вытащить неоткуда (ни в /dev ни в /sys ни в /proc ее нет)
insmod этим не занимается - его дело загрузить файл в память и позвать ядро. Линковкой (и извлечением символов) занимается само ядро. Возможно его символы и можно вытащить, но только через /proc (скорее всего).
Это точно. Вспоминается известный анекдот, про "в гаммаке и стоя" ![]() |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |