2012-01-05 7 views
0

Здравствуйтесистемного вызова() для вызова tkill()

это безопасно отправить сигнал для каждого потока процесса с использованием tkill) вызов ядра Linux (? , поскольку он не подвергается прямому воздействию, я называю его использованием syscall().

Я ссылаюсь на ссылку - < http://linux.die.net/man/2/tkill>.

но я не знаю, должен ли я делать определенные проверить до на вызов (например, проверка состояния или блокировка мьютекса и т. Д.)?

Благодаря Sandeep

+1

Что вы хотите достичь, чего не использует библиотека POSIX? – fge

+0

Я хочу периодически посылать сигнал SIGUSR1 в каждый поток процесса. и обрабатывать его. есть kill() и sigqueue(), но это не гарантирует, что сигналы будут обрабатываться соответствующей нитью каждый раз. – sandeep

ответ

1

Просто используйте библиотеку потоковой pthread_kill(). Для этого это и есть.

+0

tkill() и pthread_kill() работают с двумя разными идентификаторами потоков, знаете ли вы, что такое связь между ними? и как извлечь один из другого? – sandeep

+0

, когда собственный поток завершен, его идентификатор потока может быть повторно использован другим потоком .. так же, как и для идентификатора потока, используемого библиотекой pthread. – sandeep

+0

@sandeep pthread_kill использует идентификатор потока библиотеки pthread. tkill использует идентификатор задачи ядра (который в источниках ядра называется «идентификатор процесса»). Связь между ними полностью неопределенная и специфична для реализации. – gby

Смежные вопросы