Допустим, у меня есть поток, который выглядит примерно так:
void my_thread(char *device_name) {
int fd = open(device_name, O_RDONLY);
struct input_event ev;
while(1) {
read(fd, &ev, sizeof(struct input_event));
/* do something */
}
}
Как мне остановить такой поток? Один из способов - использовать pthread_cancel
, но я бы предпочел сделать это более изящно. Возможно, что-то вроде pthread_kill
? Однако в таком случае будет ли разблокирован метод чтения (как я предполагаю, должен) и как поток будет обрабатывать сигнал? Или это процесс, который должен это обработать?
Я был бы очень признателен за совет!