написание cgi-кода на языке C - PullRequest
4 голосов
/ 29 ноября 2010

Можно ли написать код CGI на C или C ++?пожалуйста, дайте мне "Привет, мир !!!"Пример .

Ответы [ 4 ]

17 голосов
/ 29 ноября 2010

Абсолютно.

#include <stdio.h>

int main(int argc, char *argv[]])
{
  printf("Content-type: text/plain\n\n");
  printf("Hello, world!\n")
}
3 голосов
/ 03 декабря 2010

Ева, как только вы поймете основы ответа Игнасио (cgi-bin, выполнение из браузера, веб-сервера и т. Д.), Есть несколько очень полезных библиотек, помогающих с выполнением веб-типов.Я использовал для моего cgi в C, отлично работает, экономит ваши дни:
(cgihtml - это набор подпрограмм CGI и HTML, написанных для C)отображение больших объемов данных:
http://www.algonet.se/~thunberg/template2doc/

Облегченные веб-серверы:
http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers

и другие ресурсы:
http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/Libraries_and_Classes/

http://en.wikipedia.org/wiki/Common_Gateway_Interface

0 голосов
/ 17 февраля 2018

Скомпилируйте этот простой исходный код в исполняемый файл :

#include <stdio.h>

int main()
{
    printf("content-type: text/plain\n\n");
    printf("Hello, world!");

    return 0;
}

Я предполагаю, что скомпилированный файл cgi-app.cgi:

gcc cgi-src.c -o cgi-app.cgi

Если вы запускаете httpd в качестве серверного программного обеспечения, вы можете поместить cgi-app.cgi в свои каталоги:

  1. cgi-bin: в большинстве случаев разрешено запускать CGI.
  2. htdocs: добавьте 2 строки в ваш файл .htaccess:
<blockquote>Options +ExecCGI
AddHandler cgi-script .cgi</blockquote>

Никогда не забывайте установить подходящее execute разрешение для ваших .htaccess и cgi-app.cgi

0 голосов
/ 07 декабря 2017

Взгляните на kcgi

kcgi - это библиотека CGI и FastCGI с открытым исходным кодом для веб-приложений на Си.Это минимальный, безопасный и проверяемый

#include <sys/types.h> /* size_t, ssize_t */
#include <stdarg.h> /* va_list */
#include <stddef.h> /* NULL */
#include <stdint.h> /* int64_t */
#include <stdlib.h> /* EXIT_SUCCESS, etc. */
#include <kcgi.h>

int main(void) {
  struct kreq r;
  const char *page = "index";
  if (KCGI_OK != khttp_parse(&r, NULL, 0, &page, 1, 0))
    return(EXIT_FAILURE);
  khttp_head(&r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]);
  khttp_head(&r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME__MAX == r.mime ? 
      KMIME_APP_OCTET_STREAM : r.mime]);
  khttp_body(&r);
  khttp_puts(&r, "Hello, world!");
  khttp_free(&r);
  return(EXIT_SUCCESS);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...