Думаю многие знают, как работает CGI взаимодействие между клиентом и сервером: клиент получает от сервера и отдает серверу данные через стандартные stdin и stdout. Многие наверное даже сами писали CGI клиентов, ведь по сути — любой скрипт для веб-сервера это и есть CGI-клиент. А многие ли задавались вопросом, как именно происходит эта «магия»? Каким образом стандартные функции для ввода/вывода вместо экрана взаимодействуют с сервером? Результаты поиска ответа в сети меня не удовлетворили и я решил сам написать простейший CGI сервер, который сможет:
* Запускать дочерний процес — CGI скрипт
* Передавать скрипту переменные окружения и переменные командной строки
* Принимать от скрипта ответ
* Завершаться, когда завершится процесс клиента
Кроме этого, мне хотелось, чтобы клиент и сервер компилировались как в Windows, так и в Linux. [Подробности][1]
[1]:
http://habrahabr.ru/post/254621/#habracut