Personal tools
You are here: Home メンバー 菊地時夫 授業 情報社会と情報倫理 fork() のテスト
Document Actions

fork() のテスト

by 菊地時夫 last modified 2008-01-04 16:29

UNIX では fork() によって新しいプロセスが誕生します。

fork() のテスト

  • fork() とは,UNIX でプロセスを作り出すためのシステムコールである。
  • fork() を実行するためには,それを実行するプロセスが無いといけないので,
  • プロセスがプロセスを産み出すという仕組みになっている。

テストプログラム

  • /* forktest.c
     * ... fork() のテスト
     */
    #include <stdio.h>
    main() {
        int i;
        printf("Test of fork()\n");
        i = fork();
        if (i == 0) {
            printf("Child process\n");
        } else {
            printf("Parent process\n");
        }
        printf("End of test\n");
    }   
    

実行例

  • $ ./forktest
    Test of fork()
    Child process
    End of test
    Parent process
    End of test

結果の考察

  • 2つの End of testが出ている。
  • fork() で2つのプロセスになったことがわかる。
  • なお,fork() の戻り値 (i に入る) は
    • 親プロセスでは子プロセスの "プロセス ID" であり,
    • 子プロセスでは 0 になる。

でもって、問題になったプログラムは

  • main() {

    while (1) { fork() } }

  • ねずみ算式にプロセスが大量発生します。

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: