2015-08-26 32 views
5

Come posso elencare tutti i thread all'interno del processo corrente in FreeBSD? O almeno, ottieni il numero di thread in esecuzione.Elenca tutti i thread

Ho trovato la chiamata di sistema Linux pstat_getproc che restituisce una struttura contenente pst_nlwps, il numero di thread. Sto cercando qualcosa di simile a questo su FreeBSD.

O forse c'è qualcosa come /dev/fd ma per i thread.

Tutto ciò che posso utilizzare per ottenere una sorta di idea su quanti altri thread sono in esecuzione.

Voglio essere in grado di farlo a livello di codice in C, non utilizzando un'applicazione esistente.

+0

Sei sicuro che 'pstat_getproc' è un syscall' 'Linux'? –

+0

Forse questo è quello che stai cercando? [Libprocstat] (https://www.freebsd.org/cgi/man.cgi?query=libprocstat&sektion=3&apropos=0&manpath=FreeBSD%2010.0-RELEASE). In particolare, 'procstat_getprocs' –

risposta

2

Uso procstat(1), esempio

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

che dipende libprocstat(3).

+0

Mi dispiace, avrei dovuto chiarire. Non sto cercando uno strumento da riga di comando, desidero farlo a livello di programmazione in C. – user2868331

+1

@ user2868331 Guardare a /usr/src/usr.bin/procstat/procstat_threads.c. – xcah