発展課題:CGIの実現

指定されたURLの最後が「.cgi」であった場合, サーバが指定されたファイルを実行し,結果をクライアントに返すようにせよ.

なお,子プロセスが標準出力に出力するデータを別のソケット (ファイルディスクリプタ)にリダイレクトするには,dup もしくは dup2 システムコールを使えばよい.例えば以下では,ファイル ls.outls -lR の実行結果が出力される.

      ...
      fd = open("ls.out", O_WRONLY|O_CREAT, 0644);
      close(1); /* 標準出力を close */
      dup(fd); /* 標準出力を fd にリダイレクト */
      if (execl("/bin/ls", "ls", "-lR", NULL) < 0) {
      ...

さらに,CGI では様々なパラメータをクライアントからサーバに送ること ができる.CGI がパラメータを受け取れるように変更せよ。

一般にこの実装は,サーバで,クライアントから受け取ったパラメータを環境変 数に設定してCGIプログラムを起動することにより行う(詳しいパラメータ の受け渡しの書式は参考書を参照すること).

NAKAZAWA Koji
2014-09-30