execシステムコールによるCGIの実現(発展課題)

fork するだけでは同じプログラムコードを持つ複数のプロセスができるだ けであり,別のプログラムコードを持つプロセスを作ることはできない.そこで exec システムコール群を用いて,現プロセスを別のプログラムコードに置 き換えることができる.

例えば次のようにして,新しいプロセスを起動できる.

   ...
   pid = fork();
   if (pid == 0) {
      if (execl("/bin/ls", "ls", "-lR", NULL) < 0) {
         perror("execl");
         exit(1);
      }
   }
ここでは,forkによって分岐された子プロセスが,execlによって /bin/ls -lRを実行するプロセスに置き換えられている.execlの一 つ目の引数が実際に実行するコマンドのパス,二つ目以降が引数の列である (NULLによって引数の最後であることが示されている).

以上を踏まえて,以下のような発展課題を考えてみよ.

NAKAZAWA Koji
2014-09-30