macです。 たびたびすみません。 わさびぃ さん: > とりあえず、書店に行って、htmlを吐き出すための > C言語コードの書き方を見なくては・・。CGI、CGI,CGI・・・ 先程、どーしようもない本の話しましたが、 CでCGI書くのは、ぜんぜん難しくありません。 もっとも困難なのは、 「全世界中からアクセスされても大丈夫な、 完璧なセキュリティホールつぶし。」で、 社内の「善意のオペレータ」がいじる場合、 そこまで神経質になる必要はありません。 hello, worldじゃ、屁の役にも立たないので、 ============================================================ #include <stdio.h> int main(int argc, char argv[], char *env[]) { FILE *fp; char buf[BUFSIZ]; printf("Content-type: text/html; charset=Shift_JIS\n\n\n"); printf("<html>\n"); printf("<hader>\n"); printf("</hader>\n"); printf("<body>\n"); printf("<xmp>\n"); printf("test\n\n"); if ((fp = popen("/usr/bin/printenv", "r")) == NULL) { printf("popen error!\n"); } else { while (fgets(buf, BUFSIZ, fp) != 0) { printf("%s", buf); } pclose(fp); } printf("</xmp>\n"); printf("</body>\n"); printf("</html>\n"); return(0); } ============================================================ URLの後ろに?と引数をつけると、 ============================================================ #include <stdio.h> #include <stdlib.h> int main(int argc, char argv[], char *env[]) { FILE *fp; char buf[BUFSIZ]; int i;char *p; printf("Content-type: text/html; charset=Shift_JIS\n\n\n"); printf("<html>\n"); printf("<hader>\n"); printf("</hader>\n"); printf("<body>\n"); printf("<p>\n"); if ((p = getenv("REMOTE_ADDR")) != NULL) { printf("Your IP = %s\n", p); } else { printf("No IP\n"); } printf("</p>\n"); printf("<p>\n"); if ((p = getenv("QUERY_STRING")) != NULL) { printf("QUERY_STRING = %s\n", p); } else { printf("No QUERY_STRING\n"); } printf("</p>\n"); printf("</body>\n"); printf("</html>\n"); return(0); } ============================================================ QUERY_STRINGって、そうなってたのとか、などとやっているうちに、 そこそこ作った「小道具」を溜め込めば、 perlより簡単で読みやすく、速度は10倍以上速い CGIが簡単に書けることに気づくでしょう。 それに、(これが危険だから避けて通っているのですが)、 Cだから、I/Oも制限なしに操作可能です。 通常は、apache, nobodyの権限で動いていますが、 /etc/sudoersの設定で、別の権限を与えることもできるのです。 -- mac