CGIプログラムの特徴

C言語で作ったCGIプログラムの特徴は、
 1. ウエブサーバから起動される。従って、どの様に起動されるかという条件が有る。
     ・ ファイルパーミッションの問題
     ・ データの受け取り方の問題
 2. 標準出力に書き出したデータは、ウエブサーバに受け取られて、HTMLドキュメントとしてブラウザに送られる。
 3. 標準エラー出力に書き出したデータは、ウエブサーバのエラーログに出力される
という部分が、CGIでないプログラムと異なります。

また、同一のプログラムのインスタンスが同時に複数(ブラウザにアクセスされる毎に)できます。

CGIプログラムの起動

大別すると、以下の2つの場合が考えられます。
  1.  ブラウザアクセスのURLでCGIを指定した場合。 ハイパーリンクも同じです。
  2.  FORMのActionでCGIを指定した場合
  3.  SSIでCGIを指定した場合 
です。
これらの場合について、CGIが、パラメータをどの様に受け取るかが、CGIを理解する上で必要な事です。

1. の場合
   URLは、
    http://www.mediapalace.co.jp/cgi-set/text.cgi?p1=a1&p2=a2&p3=a3
   の様に、CGIに渡すパラメータを伴います。
   p1=a1 p2=a2 p3=a3 という、&で連結された項目が、アーギュメントとして、CGIに渡されます。

2.の場合
   FORMのmetod が POST の場合と、GETの場合で異なります。
   method="POST" の場合は、
       <INPUT type=text name=p1 >
     の様な入力について、ブラウザから送信されたデータイメージが、標準入力を通して、CGIに与えられます。
   method="GET" の場合は、環境変数QUERY_STRING の値として、各入力項目の値が、
    p1=a1&p2=a2&p3=a3
   の様な文字列で与えられます。

3.の場合は、SSIとして
   <!--#exec cgi="text.cgi p1=a1 p2=a2 p3=a3"-->
   と書いてあれば、各パラメータは、各パラメータがアーギュメントとして、CGIに渡されます。

つまり、CGIは、
   アーギュメント  環境変数   標準入力
の3つのうち、いずれかの方法(起動方法で異なる)でパラメータを受け取ると言う事です。
いずれの方法であっても、CGIの処理レベルには、p1=a1 p2=a2 p3=a3 というパラメータが指定された事を知る事が
必要十分な事です。