Есть примерно такая структура:
void *thread1(void *d) {
while(1) {
char *buf=malloc(0x100);
fgets(stdin, buf, 0x100);
// какаие-то действия
free(buf);
}
}
int main() {
pthread_t t;
pthread_create(&t, 0, thread1, 0);
// какаие-то действия
}
т.е. отдельный поток читает из stdin'а/трубы/чего-то ещё... как его правильно остановить (с очисткой памяти итп) по асинхронному событию из главного потока? например получению сигнала... или придётся как-то правильно читать, чтобы чтение было неблокирующим?