У меня есть вопрос: есть ли какой-нибудь путь к SPID в linux 2.6 из приложения C ++? Когда я делаю "ps -amT", я вижу потоки в процессе:
root@10.67.100.2:~# ps -amT
PID SPID TTY TIME CMD
1120 - pts/1 00:00:20 sncmdd
- 1120 - 00:00:00 -
- 1125 - 00:00:00 -
- 1126 - 00:00:00 -
- 1128 - 00:00:00 -
- 1129 - 00:00:09 -
- 1130 - 00:00:00 -
- 1131 - 00:00:09 -
1122 - pts/1 00:00:00 snstatusdemuxd
- 1122 - 00:00:00 -
- 1127 - 00:00:00 -
- 1132 - 00:00:00 -
- 1133 - 00:00:00 -
И тогда в файловой системе я вижу темы:
root@10.67.100.2:~# ls /proc/1120/task/
1120 1125 1126 1128 1129 1130 1131
Так есть ли способ получить SPID из моего приложения, чтобы я мог как-то определить, какой у меня SPID в каждом запущенном потоке?
Спасибо!
/ Mike
Редактировать: я должен добавить, что PID, возвращаемый из getpid (), одинаков в каждом потоке.
Когда я добавляю этот код в мои темы:
// Log thread information to syslog
syslog(LOG_NOTICE, "ibnhwsuperv: gettid()= %ld, pthread_self()=%ld", (long int)syscall(224), pthread_self());
Я получаю этот результат:
Jan 1 01:24:13 10 ibnhwsupervd[1303]: ibnhwsuperv: gettid()= -1, pthread_self()=839027488
Ни один из них не похож на SPID, заданный ps или в файловой системе proc.
Также обратите внимание, что gettid не возвращает SPID .