Я хочу прочитать ввод из pthread, используя терминал, и вывести некоторый текст на тот же терминал, используя другой pthread.
Однако вывод из одного pthread читается другим.
Я читал, что ncurses можно использовать для разделения терминала и параллельного выполнения обоих действий.
Есть ли другой способ сделать это в том же окне терминала?
void* send_message(){
char message[MESSAGE_BUFFER_LEN];
while(1){
memset(message,'\0',sizeof(message));strcat(message,username);
printf("%s",username);
fgets(message+strlen(message),MESSAGE_BUFFER_LEN-strlen(username),stdin);
sendAll(message,strlen(message));
}
}
void* recieve_message(){
char message[MESSAGE_BUFFER_LEN];
while(1){
recv(socket_fd,message,MESSAGE_BUFFER_LEN,0);
printf("%s",message);
memset(message,'\0',MESSAGE_BUFFER_LEN);
}
}
Поток ввода выполняет send_message, а поток вывода выполняет recieve_message.
Однако, независимо от того, какой поток вывода выводится на терминал, он принимается потоком ввода (send_message).
I don ' Я не хочу, чтобы это произошло.
Лучший выход из этого, который я нашел до сих пор, - это создать два windows, используя ncurses, и запустить output для одного и input для другого.