Запутанный вывод с удаленными командами SIPp через систему C ++ () в Ubuntu

0

У меня проблемы с пониманием того, как работает система() на Ubuntu.

Я создаю программу C++ для удаленного управления клиентами SIPp (удаленное управление клиентами SIPp) и в значительной степени завершил эту программу, но теперь у меня возникает проблема, когда я ее тестирую.

Я уже тестировал это на своей виртуальной машине centOS, и он работал отлично, но теперь, когда я тестирую его на своей виртуальной машине Ubuntu, он даже не выполняет команды.

На терминале Ubuntu я могу запустить echo + >/dev/udp/127.0.0.1/8888 и клиент SIPp примет команду. Однако, когда я запускаю свою программу (что делает то же самое), я получаю sh: 1: cannot create/dev/udp/127.0.0.1/8888: Directory nonexistent.

#include <stdlib.h>
int main(){
    system("echo + >/dev/udp/127.0.0.1/8888");
    return 0;//
}

Вышеприведенный код отлично работает на centOS, и клиент SIPp получает и выполняет задачу, но на Ubuntu он дает мне несуществующую ошибку Directory.

Из того, что я вижу, он в настоящее время пытается прочитать> как я пытаюсь вывести файл, но экранирование> с \> просто вызывает ошибку компилятора.

warning: unknown escape sequence: '\>' [enabled by default]
 system("echo + \>");
        ^

Если кто-то может указать мне в правильном направлении, я бы был одним счастливым туристом.

Теги:
centos
sip

2 ответа

1
Лучший ответ

Поэтому после поиска навсегда я понял, что это связано с тем, что доступ к /dev/udp был только функцией bash, а system() интерпретировался bin/sh.

Изменение моего системного() вызова system("bash -c \"echo + >/dev/udp/localhost/8888\""); решил проблему.

0

Имел подобную проблему и нашел другое решение, я должен был сделать это в bashscript, и ubuntu бросил ту же ошибку. Это сработало для меня:

echo "+" | nc -4u -w1 127.0.0.1 8888

Получил это отсюда: http://mikeberggren.com/post/53883822425/ncudp

Ещё вопросы

Сообщество Overcoder
Наверх
Меню