Есть консольное приложени, работает в диалоговом режиме, т.е. свой шелл.
Как малой кровью добавить к нему функцию удаленного управления?
Т.е. получить этот шелл с удаленной машины?
Исходники доступны, поэтому сделал следующее (изврат конечно, но..) :
for (;;) {
connfd = accept (listenfd, (struct sockaddr*) &servaddr, (socklen_t*) &len);
if (connfd < 0) {
perror("accept");
close(connfd);
close(listenfd);
exit(1);
}
dup2(connfd , STDIN_FILENO);
dup2(connfd, STDOUT_FILENO);
dup2(connfd, STDERR_FILENO);
close(connfd);
while ( (buff = readline("> ")) && ( 0< strlen(buff)) ) {
error = luaL_loadbuffer(L, buff, strlen(buff), "line")
|| lua_pcall(L, 0, 0, 0);
// Здесь используется Lua для распарсивания ввода юзера и вызова
//соответствующих команд (функций) настоящего шелла. Т.е. Lua
//используется в качестве некоего враппера для функций шелла.
}
}
Шелл запускается функцией (скажем iocsh()), функция блокирующая.
выход из этой функции в данном случае == останов программы.
Т.е. вышеприведенный readline это замена настоящему шеллу.
Вопрос в том, как обеспечить требуемый функционал (отдать шелл
удаленно) и не делать подобных костылей. Параллельный сервер не
требуется, т.е. одновременно один клиент. Вариант с netcat'oм не катит, т.к. приложение должно работать не зависимо от того,
подсоединился ли клиент, т.е. общение с клиентом посредством шелла
это вторичная задача. Направьте в правильном направлении плз.
ЗЫ Опыта разработки под *nix мало...

Ответ на:
комментарий
от Reset

Ответ на:
комментарий
от rymis


Ответ на:
комментарий
от mky
Ответ на:
комментарий
от mr-badguy
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум проблема с сокетами [C] (2009)
- Форум Бесконечный accept() вешает систему (2014)
- Форум Уничтожение дочернего процесса (2004)
- Форум Сокеты (2019)
- Форум Консольный обмен сообщениями (2017)
- Форум Не могу победить TIME_WAIT, как закрывать сокеты? (2010)
- Форум консольный ввод-вывод (ncurses) (2006)
- Форум Как в QEMU завернуть консольный вывод? (2007)
- Новости ncurses - библиотека для консольного ввода-вывода (2006)
- Форум Ввод-вывод (2013)