Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод процессов и потоков на С 
:(
    Опции темы
wast
Дата 14.5.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Народ, помогите плз, как на С выводить инфу о запущенных процессах и их потоках? какие вызовы и библиотеки нужно использовать?
PM MAIL   Вверх
bilbobagginz
Дата 14.5.2009, 12:13 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 4
Всего: 317



всё просто. в линукс есть программа ps.
она выводит всё что тебе надо.
скачай ее исходники, и посмотри как она это делает.
удачи.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
nickless
Дата 14.5.2009, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 4
Всего: 181



Для вопросов по программированию под никсами у нас есть специальный раздел.

Модератор: Тема перенесена из "*NIX системы: Общие вопросы"


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
xvr
Дата 15.5.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



man 5 proc

PM MAIL   Вверх
wast
Дата 15.5.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



да, я читал про /proc/ , но про потоки ни слова... может кто-нить сталкивался с ними?
PM MAIL   Вверх
xvr
Дата 15.5.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(wast @ 15.5.2009,  19:48)
да, я читал про /proc/ , но про потоки ни слова... может кто-нить сталкивался с ними?

Потоки в Linux выглядят как процессы (каковыми и являются). Так что для каждого потока в /proc/ есть своя дира

PM MAIL   Вверх
MAKCim
Дата 15.5.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(xvr @  15.5.2009,  20:52 Найти цитируемый пост)
Так что для каждого потока в /proc/ есть своя дира

нет  smile 

в /proc только лидер threads group

Добавлено через 1 минуту и 4 секунды
Цитата(xvr @  15.5.2009,  20:52 Найти цитируемый пост)
Потоки в Linux выглядят как процессы (каковыми и являются).

c т. з структур данных ядра


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xvr
Дата 16.5.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(MAKCim @ 15.5.2009,  22:14)
Цитата(xvr @  15.5.2009,  20:52 Найти цитируемый пост)
Так что для каждого потока в /proc/ есть своя дира

нет  smile 

в /proc только лидер threads group

Нету сейчас под рукой Linux'а, но когда я на него смотрел в последний раз в /proc/ было все, включая все thread'ы (специально проверял)
Возможно сиё зависит от версии ядра (или от погоды на марсе  smile )
PID'ы thread'ов у 'лидер threads group' были где то перечислены
Дойду до работы - гляну

PM MAIL   Вверх
MAKCim
Дата 16.5.2009, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(xvr @  16.5.2009,  10:08 Найти цитируемый пост)
но когда я на него смотрел в последний раз в /proc/ было все, включая все thread'ы (специально проверял)

ух, давно ты смотрел  smile 


Цитата(xvr @  16.5.2009,  10:08 Найти цитируемый пост)
Возможно сиё зависит от версии ядра

ну в 2.4 реализации NPTL не было, поэтому POSIX threads были реализованы в как linux threads (т. е pthread_create()->clone(CLONE_VM | CLONE_FS | ...))
начиная с 2.6 в libc по-умолчанию используется NPTL (т. е pthread_create()->clone(CLONE_THREAD))
однако остается возможность использования linux threads семантики с помощью LD_ASSUME_KERNEL

Добавлено через 3 минуты и 18 секунд
я тоже слегка нагнал
инфа есть, но не в /proc, а в /proc/<PID>/task, PID - лидер threads group



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
wast
Дата 17.5.2009, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



т.е. нити надо искать в pid/task ? а лидер threads group это какбы сам процес? тогда скажите где лежат исходники ps и проч или какую документацию смотреть? (у меня openSuse 11)
PM MAIL   Вверх
MAKCim
Дата 18.5.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(wast @  17.5.2009,  10:27 Найти цитируемый пост)
тогда скажите где лежат исходники ps

здесь


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xvr
Дата 18.5.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Дошел до работы, проверил:

Код

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

#include <sys/types.h>
#include <linux/unistd.h>
 
_syscall0(pid_t,gettid)

void* th(void*)
{
 printf("TID=%d\n",gettid());
 sleep(120);
 return NULL;
}

int main()
{
 printf("PID=%d\n",getpid());
 for(int i=0;i<3;++i)
  {
   pthread_t tid;
   pthread_create(&tid,NULL,th,NULL);
   sleep(1);
  }
 sleep(120);
 return 0;
}

Результат:
Цитата

[rakhvato@msteplxl13 ~]$ ./threads &
[1] 19152
[rakhvato@msteplxl13 ~]$ PID=19152
TID=19153
TID=19154
TID=19155
 
[rakhvato@msteplxl13 ~]$ ls -l /proc/19152/task/
total 0
dr-xr-xr-x  3 rakhvato cmplr 0 May 18 16:14 19152
dr-xr-xr-x  3 rakhvato cmplr 0 May 18 16:14 19153
dr-xr-xr-x  3 rakhvato cmplr 0 May 18 16:14 19154
dr-xr-xr-x  3 rakhvato cmplr 0 May 18 16:14 19155

[rakhvato@msteplxl13 ~]$ ls -ld /proc/19153
dr-xr-xr-x  3 rakhvato cmplr 0 May 18 16:14 /proc/19153

[rakhvato@msteplxl13 ~]$ ls -ld /proc/19154
dr-xr-xr-x  3 rakhvato cmplr 0 May 18 16:14 /proc/19154

[rakhvato@msteplxl13 ~]$ ls -ld /proc/19155
dr-xr-xr-x  3 rakhvato cmplr 0 May 18 16:14 /proc/19155

[rakhvato@msteplxl13 ~]$ uname -a
Linux msteplxl13 2.6.9-42.ELsmp #1 SMP Wed Jul 12 23:32:02 EDT 2006 x86_64 x86_64 x86_64 GNU/Linux

Так что входы в /proc есть для всех нитей, f не только для лидера thread group

PM MAIL   Вверх
MAKCim
Дата 18.5.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(xvr @  18.5.2009,  15:31 Найти цитируемый пост)
Так что входы в /proc есть для всех нитей, f не только для лидера thread group

 smile 
Цитата(MAKCim @  16.5.2009,  11:04 Найти цитируемый пост)
я тоже слегка нагнал
инфа есть, но не в /proc, а в /proc/<PID>/task, PID - лидер threads group




--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xvr
Дата 18.5.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(MAKCim @ 18.5.2009,  20:44)
Цитата(xvr @  18.5.2009,  15:31 Найти цитируемый пост)
Так что входы в /proc есть для всех нитей, f не только для лидера thread group

 smile 
Цитата(MAKCim @  16.5.2009,  11:04 Найти цитируемый пост)
я тоже слегка нагнал
инфа есть, но не в /proc, а в /proc/<PID>/task, PID - лидер threads group

Не
Цитата

но не в /proc, а в /proc/<PID>/task
а
Цитата

и в /proc, и в /proc/<PID>/task



Это сообщение отредактировал(а) xvr - 18.5.2009, 21:28
PM MAIL   Вверх
MAKCim
Дата 18.5.2009, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



xvr, 
неа
по крайней мере у меня
Цитата

Linux rei3er 2.6.27.7-default #2 SMP Wed Dec 31 20:38:18 EET 2008 x86_64 x86_64 x86_64 GNU/Linux

в /proc ничего нет

меня смущает версия твоего ядра, уж больно оно старое, не linuxthreads ли там используются?
можно strace проги threads?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.