Список всех тем

Как я могу перечислить все потоки в текущем процессе в FreeBSD? Или, по крайней мере, получить количество запущенных потоков.

Я нашел системный вызов Linux pstat_getproc, который возвращает структуру, содержащую pst_nlwps, количество потоков. Я ищу что-то подобное на FreeBSD.

Или, возможно, есть что-то вроде /dev/fd, но для потоков.

Все, что я могу использовать, чтобы получить какое-то представление о том, сколько других потоков работает.

Я хочу иметь возможность делать это программно на C, не используя существующее приложение.


person user2868331    schedule 26.08.2015    source источник
comment
Вы уверены, что pstat_getproc является системным вызовом Linux?   -  person Arkadiusz Drabczyk    schedule 26.08.2015
comment
Возможно, это то, что вы ищете? libprocstat. В частности, procstat_getprocs   -  person Christopher Schneider    schedule 27.08.2015
comment
См. также stackoverflow.com/questions/3475750/   -  person Raedwald    schedule 05.06.2018


Ответы (1)


Используйте procstat(1), например,

# procstat -t $(pgrep openvpn)
  PID    TID COMM             TDNAME           CPU  PRI STATE   WCHAN    
  537 100051 openvpn          -                  0  120 sleep   select 

который зависит от libprocstat(3).

person xcah    schedule 26.08.2015
comment
Извините, я должен был уточнить. Я не ищу инструмент командной строки, я хочу сделать это программно на C. - person user2868331; 26.08.2015
comment
@ user2868331 Посмотрите /usr/src/usr.bin/procstat/procstat_threads.c. - person xcah; 27.08.2015