Не могу скомпилировать программу, которая вызывает tgkill - PullRequest
3 голосов
/ 21 марта 2011

Я пытаюсь написать программу, которая использует tgkill для отправки сигнала определенному потоку, но всякий раз, когда я компилирую его с помощью gcc, я получаю ошибку о неопределенной ссылке на 'tgkill'.Я попытался скомпилировать с -lpthread, но это не помогло.Я гуглил и гуглил и не могу придумать никаких ответов.Как мне заставить его скомпилировать ??

Ответы [ 3 ]

6 голосов
/ 21 марта 2011

Из справочной страницы tgkill():

Glibc не предоставляет упаковщиков для эти системные вызовы; позвоните им, используя Системный вызов (2).

4 голосов
/ 12 апреля 2011

Возможно, вы захотите использовать что-то подобное.

tgid=getpid();  
tid=gettid();  
syscall(SYS_tgkill, tgid, tid, signalname));
3 голосов
/ 21 марта 2011

Как отмечено в другом ответе, glibc не предоставляет оболочки для tkill() или tgkill().

Вместо этого вы должны использовать pthread_kill().

...