NS-3 с DCE: как получить ввод во время выполнения, работая с моими двоичными файлами

Я использую ns-3 с прямым выполнением кода, работаю над Ubuntu, и через некоторое время у меня все заработало, но дело в том, что у меня есть четыре узла с каждым одним двоичным файлом для запуска, и некоторые из двоичных файлов принимают входные данные. от меня во время выполнения через std::cin. (Затем они будут отправлять сообщения другим узлам на основе ввода). Мне нужно, чтобы это работало в среде ns-3, и я не мог понять, как это сделать.

До сих пор, если я запускаю свою симуляцию, и она доходит до точки, где запускается узел с приложением, ожидающим ввода (в бесконечном цикле), все это блокируется, оно не запускает другие приложения, оно даже никогда не останавливается. симуляция. Если я просто с любопытством набираю что-то и нажимаю Enter, появляется сообщение «Ошибка перемещения: elf-cache/0/libgcc_s.so.1: символ dl_iterate_phdr, версия GLIBC_2.2.5 не определена в файле 0001.so.6 с указанием времени ссылки» и дает мне код выхода 127.

Поэтому, естественно, я хотел бы просто узнать, как выполнять ввод во время выполнения в ns3, но я не могу найти никаких материалов по этому поводу.


person Sorokine    schedule 16.08.2015    source источник
comment
update---- ошибка перемещения выше может быть решена с помощью патча, описанного здесь: groups.google.com/forum/#!topic/ns-3-users/4CyKNszXgNY В основном вы берете файл model/libc-dce.cc и добавляете #include ‹link.h› и в model/libc-ns3.h вам нужно добавить строку 612 +NATIVE (dl_iterate_phdr) . Если вы сделаете это, ns3 будет использовать для этого исходную библиотеку, как указано здесь: nsnam.org/docs/dce/manual/html/dce-user-syscalls.html Все еще остается моя первоначальная проблема: как мне управлять вводом из файла или из std::cin ? Любая подсказка или ссылка будут полезны, спасибо всем.   -  person Sorokine    schedule 20.08.2015


Ответы (1)


Итак, я наконец нашел решение для ввода файлов. Может быть, это полезно для кого-то.

std::ifstream config_doc("path/here/file.txt", std::ifstream::binary);

у меня сработало - если вы убедитесь, что ваш путь начинается с указанной папки для ns3-узла. Например, если это 0-й (1-й) узел, его нужно поместить в папку files-0, вот так: (...) /source/ns-3-dce/files-0/path/here/file.txt (если вы используете path/here/file.txt, как указано выше). Домашний каталог узла всегда находится в каталоге files-x.

person Sorokine    schedule 25.08.2015