С/С++ для CGI

Статус
Закрыто для дальнейших ответов.

master

Member
Регистрация
27.12.2005
Сообщения
20
Странное дело, почему то раздел этот очень бедный, хотя порой на C не так уж плохо писать прогульки.

Итак тема о том с чего же начать и как компилировать.

Простейший пример на си, который генерирует страницу с текстом "Hello world"
test.c
Код:
int main(int argc, char *argv[])
{
    puts("Content-Type: text/html\r\n\r\nHello, world!");
    return 0;
}
Откомпилировать можно из консоли, набрав команду
Для тех у кого нет консоли на сервере (пользуются простейшим хостингом с поддержкой CGI) можно запустить компилятор из php скрипта, так:
Код:
<?
echo '<pre>';
echo `gcc -o test.cgi test.c 2>&1`;
echo '</pre>';
?>
 

Creator

Administrator
Команда форума
Регистрация
03.03.2005
Сообщения
1 745
Странное дело, почему то раздел этот очень бедный, хотя порой на C не так уж плохо писать прогульки.
Это правда, но насколько мне известно на C/C++ мало кто пишет веб-приложения целиком. Как правило, на этом языке реализуют особенно нагруженные и ресурсоохотчие компоненты.
Исправьте если это не так.

Чуток подправил:

Код:
<?
echo '<pre>';
echo system('gcc -o test.cgi test.c 2>&1');
echo '</pre>';
?>
 

master

Member
Регистрация
27.12.2005
Сообщения
20
Всё так, средства определяются поставленными целями и возможностями.
Я порой не брезгую даже QBASIC'ом, если мне надо просто проверить идею простейшего алгоритма, а это проще чем сделать то же самое на Си.
Но рано или поздно у многих возникает необходимость, решить ресурсоёмкую задачу :) и тут то и нужен Си Хотя бы для того, чтобы написать pecl расширение для любимого php


Пример 2. Начала использования переменных окружения:
Код:
#include <stdio.h>
#include <stdlib.h>

void form_show();

char *query;
char *post;
char *method;
int len;
extern char **environ;

int main(int argc, char *argv[]){

  // Показать HTML форму
  form_show();

  // Получить метод запроса
  method = getenv("REQUEST_METHOD");
  printf("REQUEST_METHOD=%s<br/><br/>", method);

  // Получить строку GET запроса
  query = getenv("QUERY_STRING");
  if(query != NULL) printf("QUERY_STRING=%s<br/><br/>", query);

  // Получить строку POST запроса
  if(strcmp(method,"POST")==0){
    query = getenv("CONTENT_LENGTH");len = atoi(query);
    post = (char *)malloc(len);
    fread(post, 1, len, stdin);
    printf("HTTP_POST=%s<br/><br/>\n",post); 
    free(post);
  }

  // Получить все переменные окружения
  char **p = environ;
  while(*p != NULL)
    printf("%s<br/>\n",*p++); 

  return 0;
}


void form_show(){

  printf("Content-Type: text/html\r\n\r\n");
  printf("<html><head><title>TeSt</title></head><body>");
  printf("<form method=post><input name=login /><input name=pass type=password /><input type=submit /></form>");
  printf("</body></html>");

  return;
}
Это правда, но насколько мне известно на C/C++ мало кто пишет веб-приложения целиком. Как правило, на этом языке реализуют особенно нагруженные и ресурсоохотчие компоненты.
В принципе можно показать, что на си писать не сложнее чем на пхп, если удобно организовать подход к разработке приложений.
 

Creator

Administrator
Команда форума
Регистрация
03.03.2005
Сообщения
1 745
В принципе можно показать, что на си писать не сложнее чем на пхп
Я думаю это будет интересно не только мне:)
 

master

Member
Регистрация
27.12.2005
Сообщения
20
Статус
Закрыто для дальнейших ответов.
Верх Низ