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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
C言語とhtmlの違いを どなたか分かり易く 丁寧に教えてください
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
二つの整数値の大小比較
-
C言語 タイマーのソースについて
-
円の面積を求めるプログラミン...
-
CTRL+Dでループを抜けるには
-
C言語でマウス入力(クリックや...
-
コンパイルエラーについて
-
端末の同じ場所に出力
-
C言語での、年複利の計算方法...
-
#include<stdio.h> int main(in...
-
コマンドラインに出力した文字...
-
3つの整数を画面から入力して...
-
cshの文字列操作(0埋め)
-
strcmp
-
Microsoft Visual Studio 2008...
-
信頼区間の1.96や1.65ってどこ...
-
2÷3などの余りについて
-
複数桁10進数の*桁目だけを抽出...
-
プログラミング初心者です。 Py...
-
std::set<int> で、ある値が何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
CTRL+Dでループを抜けるには
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
コンパイルエラーについて
-
c言語でAからZまでを表示する...
-
4の倍数を論理演算で表す。。
-
台形の面積を求めるプログラム
-
8人分のテストの点数を入力し、...
-
コマンドラインに出力した文字...
-
switch分のケースを範囲数?に...
-
(C言語)めちゃくちゃな値にな...
-
テキストカーソル位置の取得
-
strcmp
-
defineで定数が置き換えられな...
-
WM_CLOSEで閉じれないウィンド...
-
%P と %X の違い
-
cshの文字列操作(0埋め)
-
円の面積を求めるプログラミン...
-
printfの出力内の文字をdefine...
おすすめ情報