Tashifa Ответов: 1

Как я могу позволить пользователю взаимодействовать с программой C++, скомпилированной на моем сервере?


Я создаю веб-сайт, где пользователь может писать код c++, который будет скомпилирован на моем сервере. Я использую функцию php exec для компиляции кода, но она не позволяет пользователю взаимодействовать с кодом, то есть принимать пользовательский ввод.

Что я уже пробовал:

Я попытался открыть командную строку в фоновом режиме, а затем запустить исполняемый файл cpp, но все равно не могу принять пользовательский ввод или использовать cin.
Мне нужна помощь в принятии пользовательского ввода.
Я делаю что-то вроде codecademy, но для интерактивного учебника C++.

Richard MacCutchan

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

Tashifa

можете ли вы рассказать мне, как онлайн-компиляторы позволяют пользователям взаимодействовать с программой C++, где требуется пользовательский ввод через "cin"?

Richard MacCutchan

Как я уже говорил выше, вы не можете использовать cin для чтения с удаленного клиента. Он должен принимать входные данные через веб-страницу или другой интерфейс, подключенный к сокету.

Tashifa

как насчет чего-то вроде этого http://cpp.sh/
Он принимает пользовательский ввод через cin, я также пытаюсь сделать что-то вроде этого

Richard MacCutchan

Нет, он не принимает пользовательский ввод через cin, это веб-страница и использует Javascript, AJAX и т. д.

Richard Deeming

Это звучит невероятно опасно. Что может помешать пользователю отформатировать ваш диск? Или украсть ваши файлы? Или изменить свой сайт, чтобы обслуживать вредоносные программы?

Tashifa

Да, это тоже не давало мне покоя... Надеюсь, я вернусь к этому позже

1 Ответов

Рейтинг:
2

KarstenK

Это типичный сценарий для некоторых клиент серверных архитектур как в этом случае пример Еще один пример из Microsoft.

Важной проблемой является безопасность: поэтому когда-нибудь шифруйте данные, и вам понадобится хранилище пользователей/паролей.


Tashifa

Спасибо!
Я проверю их.