Дочерние команды в popen telnet - PullRequest
1 голос
/ 25 апреля 2011

Я пытаюсь установить локальный сеанс telnet в C ++ и отправить команды / получить данные. Прямо сейчас у меня есть:

const char *cmd = "telnet 127.0.0.1 2006";
char buffer[256];

FILE *pipe = popen(cmd, "rw");   
//if( !pipe ) { perror("popen"); exit(-1); }

while( fgets(buffer, sizeof(buffer), pipe) != NULL &&   
      !feof(pipe) )
{
    if( ferror(pipe) ) { perror("fgets"); break; }

    /* Here you do whatever you want with the data. */
    printf("%s", buffer);
}

pclose(pipe);

Который открывает соединение telnet. Мне нужно отправить команду наподобие «/ соседей» и затем получить данные, которые она вернет. В идеале, сеанс должен оставаться открытым, и я буду повторять запрос "/ соседей" каждые 20 секунд или около того.

Я думаю, что мне нужно создать дочерний процесс с помощью fork (), но я очень новичок в этом процессе.

1 Ответ

3 голосов
/ 25 апреля 2011

Использование telnet кажется довольно окольным способом сделать это. Рассматривали ли вы использование обычных сокетов для связи с удаленным процессом? Например, попробуйте это руководство по программированию сокетов .

...