Я работаю с темами. У меня есть поток, выводящий в стандартный вывод "ожидание ..." каждую a1 секунду. Я пытаюсь что-то записать в стандартный ввод в моем основном потоке, но каждую секунду, когда происходит «ожидание ...», он засасывает буквы, которые я смог написать до сих пор. Я действительно запутался в этом. Я предполагаю, что мне нужно выводить только тогда, когда в стандартном вводе обнаружена новая строка, но я не знаю, как это проверить.
вывод, который он мне дает:
waiting ...
waiting ...
fri <-- me trying to input friends
friwaiting ... <-- fri gets sucked in halfway through me typing it
waiting ...
waiting ...
мой код:
void* thread_one(void* arg){
while(1){
sleep(1);
if (write(1, "waiting ...\n", 12) != 12) {
write(2, "There was an error writing to standard out\n", 44);
}
}
return NULL;
}
int main(int argc, char **argv){
char buffer[11];
pthread_t tid;
pthread_create(&tid, NULL, thread_one, NULL);
while(1){
int r = read(0, buffer, 10);
if(r<=0){
break;
}
buffer[r] = 0;
printf("message: %s\n", buffer);
if(strcmp(buffer, "exit\n")==0){
break;
}
}
return 0;
}
Любая точка в правильном направлении очень ценится. Заранее спасибо!