Я работаю с потоками. У меня есть поток, выводящий в стандартный вывод "ожидание..." каждую секунду. Я пытаюсь что-то написать в стандартный ввод в своем основном потоке, но каждую секунду, когда происходит вывод «ожидание ...», он отстой в письмах, которые я смог написать до сих пор. Я действительно смущен этим. Я предполагаю, что мне нужно выводить только тогда, когда в стандартном вводе обнаружена новая строка, но я не знаю, как это проверить.
вывод, который он мне предоставляет:
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;
}
Любая точка в правильном направлении приветствуется. Заранее спасибо!