Поскольку вы включили тег cgi
в свой вопрос, один из способов сделать это - использовать возможности Yaws CGI .Вы просто запустите свою программу на C ++ как программу CGI.Yaws также поддерживает FCGI, что позволяет вам не запускать новый экземпляр вашей программы C ++ для каждого запроса и вместо этого иметь выделенное TCP-соединение между Yaws и экземпляром демона вашей программы.
Другой способ сделать это -написать приложение Yaws , экспортирующее функцию out/1
.Аргументом для этого будет запись #arg
, детализирующая всю информацию об обслуживаемом запросе.Ваша функция out/1
может затем вызывать Erlang NIF , написанный на C ++, передавая любую информацию из запроса, в которой она нуждается, а затем принимая ответы и возвращая их Yaws в качестве ответов.Данные PDF могут быть возвращены из вашего NIF в виде двоичных файлов Erlang.При таком подходе ваш код C ++ выполняется в том же процессе ОС, что и Yaws, поэтому вы должны быть осторожны, чтобы ваш код никогда не падал, иначе это приведет к потере всей виртуальной машины Erlang, но помимо этого этот подход будет более эффективным, чемFCGI или CGI.