2013-04-16 1 views
0

Я довольно новичок в параллельном программировании. В моей программе на C мне нужно отображать мои статистические данные на терминале, который отличается от основного.Как открыть новый cmd, подключенный к основному cmd в C

Я имею в виду:

Я реализую простой текстовый редактор. Когда пользователь записывает данные, я сохраняю размер буквы с помощью потока. Я хочу показать размер буквы в любой момент, однако это невозможно, так как пользователь прерывается при наборе текста. Поэтому я собираюсь открыть новое окно командной строки и отобразить эту информацию о размерах букв.

Как я могу это сделать? Я использую компилятор g ++ в Ubuntu.

Благодаря

+0

Что вы пробовали? Как это не сработало? Как вы думаете, вы хотите запустить два независимых потока? Должно быть, это другое окно? – Floris

+0

Я уже могу получить информацию о длине строки. Пользователь начинает что-то писать в командной строке (я использовал функцию loopch getchar()). Когда новый символ извлекается из пользователя, поток активируется и увеличивает число символов. Проблема в том, что: я хочу отображать размер символа во время ввода пользователем. Я могу распечатать данные на экране, но он просто появляется, когда пользователь печатает. Поэтому я хочу использовать другое окно .. (На самом деле это полная идея с этим комментарием, ## символы слева написаны, когда я пишу). – skynyrd

ответ

0

Я не думаю, что вам нужно, чтобы породить новую оболочку для отображения строки. Если то, что вы хотите, как поле комментария, дать этому попытку (NB: Я не выполнила ни одного экранирующего символа, поэтому забой и бежать не будет работать)

Если бы небольшую помощь здесь What is Equivalent to getch() & getche() in Linux?

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#define MAXLEN 255 
#ifdef _WIN32 
#include <conio.h> 
#else 
#include <termios.h> 

static struct termios old, newT; 

/* Initialize new terminal i/o settings */ 
void initTermios(int echo) 
{ 
    tcgetattr(0, &old); /* grab old terminal i/o settings */ 
    newT = old; /* make new settings same as old settings */ 
    newT.c_lflag &= ~ICANON; /* disable buffered i/o */ 
    newT.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */ 
    tcsetattr(0, TCSANOW, &newT); /* use these new terminal i/o settings now */ 
} 

/* Restore old terminal i/o settings */ 
void resetTermios(void) 
{ 
    tcsetattr(0, TCSANOW, &old); 
} 

/* Read 1 character - echo defines echo mode */ 
char getch(int echo) 
{ 
    char ch; 
    initTermios(echo); 
    ch = getchar(); 
    resetTermios(); 
    return ch; 
} 
#endif // _WIN32 


int main() 
{ 
    char arrayInput[MAXLEN + 1]; 
    static char printArray[MAXLEN + 15]; 
    static char tmp[5]; 
    char c; 
    int i,len=0; 
    printf("Begin\n"); 
    for(i=0;i<MAXLEN;i++) 
    { 
     putchar('\r'); 
     c = getch(); 
     for(len=0;len<MAXLEN;len++) 
      putchar(' '); 
     putchar('\r'); 
     arrayInput[i]=c; 
     arrayInput[i+1] = '\0'; 
     strcpy(printArray,""); 
     strcpy(printArray,arrayInput); 
     strcat(printArray," Size is:: "); 
     sprintf(tmp,"%d",i+1); 
     strcat(printArray,tmp); 
     printf("%s",printArray); 
    } 
    return 0; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^