No.4ベストアンサー
- 回答日時:
> 実を言えば、CGIというものがどういったものなのか、
> と言う時点で分からないんです。
> 申し訳ありませんが、どなたか簡単に教えてくれませんか?
CGI(Common Gateway Interface)についてですか。
RFC 3875がCGIの仕様書ということになってます…
http://www.ietf.org/rfc/rfc3875.txt
この文書の1章 IntroductionにCGIとはどういうものかということが書かれています。
CGIを作成するにあたっての注意点は以下に。
一般的には、4.1章にあげられているMeta-Variablesは、環境変数を経由して届くので、getenv(3)を使って取り出してください。
また、4.2章のRequest Message-Bodyは標準入力を経由して届くので、fread(3)などを利用して読み込んでください。
また、6章のCGI Responseですが、これも一般的にはprintf(3)などでstdoutにそのまま出力すればよいです。
Response Header FieldsとResponse Message-Bodyの間に空行が必要です。余分にひとつNLを入れるのを忘れないでください。
あとは、そうですね、実行形式のバイナリがそのままCGIとして動作するので、拡張子を.cgiなどのCGIとして動作するものにすればよいでしょう。
一例を挙げておきます
#include <stdio.h>
#include <stdlib.h>
int main(void )
{
char *env;
env = getenv("QUERY_STRING"); /* QUERY_STRINGは、URLの?以降の部分です。*/
printf("Content-Type: text/html\r\n"); /* Response Header Fields */
printf("\r\n");/* 空行 以下はResponse Message Body */
printf("<html><body>\n");
printf("This is CGI test program<br>\n");
if(env != NULL) printf("QUERY_STRING=%s", env);
else printf("QUERY_STRING is not found");
printf("<br>\n");
printf("<body></html>\n");
return 0;
}
No.8
- 回答日時:
> コンパイルや実行の方法がよく分かりません。
> ".c"でやればいいのでしょうか?
CGIにしたい場合のコンパイルは特段なにもいうことはありません。普通にコンソールアプリケーションを作る形でよいでしょう。
つまり、
gcc -o a.cgi a.c
などです。
設置はシェルスクリプトやperlなどで作成されたCGIと同じです。違うのはperlやシェルスクリプトはテキストベースのスクリプトであるのに対して、コンパイルした機械語のバイナリファイルだということだけです。
パーミッションも同様です。
簡単ですから、まずは一度やってみればいかがですか。
この回答への補足
補足ではありません。ご報告です。
実は、いろいろあって、予定を変更することになりそうです。変更後では、CGIを使うことは難しそうなので、この質問を締め切らせていただきます。
ご回答してくださった方々、ありがとうございました。
尚、ポイントはahoaho_hiroさんとrentaheroさんに送ります。
なるほど、普通にコンパイルするだけみたいですね。杞憂でしたか。
実行はシェルやperlと同じということですね。じゃあ、C言語にしたところで何か特別なことはない、という事になりますね。
ご回答ありがとうございました。
No.7
- 回答日時:
昔JRの仕事でやりました。
各種情報を選択、入力してその結果を出すというものです。
HTMLの"POST","GET"とかでユーザーの入力を取得し
DB検索、結果表示です。
ただ作成するだけなら
for (i=0;i<10;i++)
{
printf("<TR>"
for (j=0;j<5;j++)
{
//表のデータ
printf("<TD>%d,%d</TD>\n",i,j);
}
printf("</TR>\n"
}
のようにするだけです。(IIS環境)
ようするに printfでHTMLタグを書きます。
JavaScriptは入力規則のチェックに使いました。
ソースもあるけど、さすがに公開するのはまずいので・・・
コンパイルはWindows(IIS)ならVC
Unix系ならgccを使います。
http://www.travel.eki-net.com/area/index.asp
参考URL:http://www.travel.eki-net.com/area/index.asp
No.6
- 回答日時:
No.2です。
卒研だから今まで学んだことを活かすという意味で良い選択だと思いますが、C言語を使ったCGIは、業務ではあまり使われていないと思います。先生が勧めなかった理由かもしれません。
主流はPHPでしょうね。DBも使ってWEBアプリが作れれば、その道に進んだ時にかなり約に立つと思いますよ。
ASPやJAVA(JSP、Servlet)もお勧めです。
ASP、JSPならコンパイルの必要はありません。サーバが勝手にやってくれます。
どれも基本的な考え方は同じで、「アクセス毎にプログラム実行でHTMLを作り出す」というものです。
何を使って作るのか、先生に相談してみて下さい。
私はJAVA(JSP、Servlet)がお勧めです。
少しお返事が遅くなってしまいました。申し訳ありません。
C言語のものは使われないんですか。それもあるのかもしれませんね。
Javaに関しての知識が無いので、少し尻込みしますね。
とりあえず、先生に連絡・相談をしているところです。これから先を行うかどうかは先生のご回答によるところです。
ご回答ありがとうございました。
No.5
- 回答日時:
ちなみに#4であげたCプログラムと同様の動きをするシェルスクリプトは、以下のとおり
#!/bin/sh
printf "Content-Type: text/html\r\n"
printf "\r\n"
printf "<html><body>\n"
printf "This is CGI test program<br>\n"
if [ -n "$QUERY_STRING" ]; then
printf "QUERY_STRING=$QUERY_STRING"
else
printf "QUERY_STRING is not found"
fi
printf "<br>\n"
printf "<body></html>\n"
exit 0
UNIXの場合、このスクリプトに実行権限をつけて(chmod +x a.cgi など)HTTPサーバからCGIとして呼び出すと同様に動きます。
参考になれば。
ご回答ありがとうございます。
CGIのことはいくらか分かったと思います。
例までつけていただき、有難いのですが、コンパイルや実行の方法がよく分かりません。".c"でやればいいのでしょうか?
このような初歩的なところで躓いて申し訳ありませんが、教えていただけませんか?
No.3
- 回答日時:
先生が「可能である」とおっしゃったのは、おそらくCGIを作ることについてかと思います。
C言語で、より実用的なホームページ作成プログラムを作ることは可能です。HTMLをアップロードする前に、そのC言語のプログラムを通しておくのです。
たとえば、単なるテキストを読み込んで、それをHTMLに変換するプログラムなどです。普通ならSSIで処理するようなものを、静的に解決するツールだけでも結構有用です。
ご回答ありがとうございます。
しかし、No.2のahoaho_hiroさんのお礼で書いたのですが、CGIというものが分かりません。ですので、お礼を言っていいのか、補足をした方がいいのか分からない状況です。
「HTMLに変換するプログラム」とありますが、Cプログラムで出てくる「atoi関数」といったものと同種のものですか? それならば自分でも、少し話が分かるのですが…。
No.2
- 回答日時:
ありがとうございます。早速拝見させていただきました。
しかし、まだ最初のページしか見ていないのですが、よく内容が分かりません。
実を言えば、CGIというものがどういったものなのか、と言う時点で分からないんです。
申し訳ありませんが、どなたか簡単に教えてくれませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- Instagram HTML5の廃止とJavaScript 2 2022/04/13 21:05
- インターネット広告・アフィリエイト アフェリエイトサイト 作成について 5 2022/05/13 21:31
- 哲学 日本語は 言語類型として あたかも始原のごとくである 3 2022/05/29 04:41
- JavaScript Javascriptで出来ること 1 2022/05/16 20:19
- C言語・C++・C# C言語 3 2023/07/11 19:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
円の面積を求めるプログラミン...
-
基本的に問題
-
2進数の加算の繰り上がり
-
プログラミング教えてください
-
改行について 1行に何個かづ...
-
台形の面積を求めるプログラム
-
万年カレンダーのC言語プログラ...
-
C言語 プログラミング
-
三平方の定理を求めるプログラム
-
8人分のテストの点数を入力し、...
-
コマンドラインに出力した文字...
-
摂氏の値を計算するプログラム...
-
C言語での、年複利の計算方法...
-
既約分数の表示プログラム
-
C言語で四則演算を使って10を作...
-
C言語プログラミング
-
2次方程式の解の表示
-
学校の課題で
-
scanfに文字が入力されたときに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
コンパイルエラーについて
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報