Skip to content.

kagome.lab.tkikuchi.net

Sections
Personal tools
You are here: Home » Members » tkikuchi's Home » 授業 » 情報社会と情報倫理(2006) » fork() のテスト
Views

fork() のテスト

Document Actions
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() } }

  • ねずみ算式にプロセスが大量発生します。
Created by tkikuchi
Last modified 2006-12-05 15:28
 

Powered by Plone

This site conforms to the following standards: