Это мой первый вопрос здесь (как вы, вероятно, можете сказать по плохому форматированию вывода GDB ниже: ^}, и это может быть не тот форум ?? ...
Использование Ubuntu 14.04, вызов pthread_kill (0,0) вызывает SIGSEGV. Страница man говорит, что pthread_kill () может использоваться для определения, существует ли поток. Я должен упустить что-то чрезвычайно простое. Я понимаю, что фактическое определение / формат / структура pthread_t непрозрачно (Зависит от ОС), но, похоже, это должно сработать, а в худшем случае вернуть ESRCH. Пожалуйста, поправьте меня. Подробности следуют:
int
main (int arcg, char *argv[])
{
pthread_kill((pthread_t)0,0);
return 0;
}
gcc -g -pthread test_pthread_kill.c -otest_pthread_kill
test_pthread_kill
Segmentation fault (core dumped)
используйте pthread_create(&tid,...)
, тогда вы получите допустимое значение pthread_t
для передачи. Или используйте свой собственный тид:
pthread_kill(pthread_self(),0);