Как обработать ввод из программы на C, используя php - PullRequest
2 голосов
/ 06 октября 2011

Я работал над проектом, похожим на Кодовая панель , У меня есть форма php, которая вызывает компилятор c на сервере Linux. Компилятор компилирует, выполняет и отправляет вывод в файл, который читает и отображает скрипт php.

У меня проблемы с рендерингом операций ввода таким образом.

Я попытался отсканировать файл исходного кода для любой функции ввода, затем попросил пользователя ввести значения для каждой соответствующей переменной в функции ввода, затем я сохранил значение пользователя в текстовом файле, который я затем передал программе c как stdin. .

Это работало для базовых программ - но в тех случаях, когда есть условные операторы, это не сработало бы.

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

Или был бы другой способ эффективно справиться с этим?

1 Ответ

2 голосов
/ 06 октября 2011

Используйте proc_open, чтобы запустить подпроцесс с подробным управлением.Перенаправьте stdin, stdout и stderr запущенного процесса в файлы (или каналы, если вы наложите строгие ограничения на время выполнения и количество одновременных процессов).

Затем используйте websockets или альтернатива для связи между браузером и php, а также для ретрансляции ввода / вывода между веб-клиентом и исполняемой программой.

...