通信用語の基礎知識 全国のICカードこれひとつ 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > ソフト > システム > API・BIOS・ドライバー > UNIX・Linux
fork
辞書:電算用語の基礎知識 計算機内部固件編 (TCAPI)
読み:フォーク
外語:fork
品詞:名詞

分岐すること。UNIXシステムコール(UNIX API)の一つで、子プロセスを生成するもの。

目次
概要

UNIXでプロセスを生成する仕組みである。fork(2)システムコールを呼び出すことで行なう。

このとき、プロセスのコピー生成作業を「forkする」のように呼び、作成されたプロセスが子プロセス、fork(2)を呼び出した元のプロセスを親プロセスという。

特徴

プロセスの起動の基本原理は、次のようになる。

  1. fork()を行なう。
  2. プロセスが複製され、親子2つのプロセスが同じコードを並行して動作する状態になる。
  3. forkは親に対しては子のプロセスID、子に対しては0を返す(エラーなら-1)。
  4. forkの返値によって処理を分岐させる。
    1. 非0の値を得たほうのプロセス(親プロセス)は単にwait(2)で子の終了を待ったり、他の処理を続けたりする。
    2. 0を得たほうのプロセス(子プロセス)は子プロセスで実行すべきコードを実行したり、exec(2)系システムコールによって自分が実行するプログラムを置き換えたりする。
サンプル

子プロセスとしてlsを実行し、結果のステータスを表示するサンプルを以下に例示する。

#include <unistd.h>
#include <sys/types.h>

int main(int argc, char* argv[])
{
    pid_t pid;

    pid = fork();
    if (pid == -1)
    {
        /* fork失敗。エラー。 */
        perror("fork failed.");
    }
    else if (pid)
    {
        /* 親プロセス。たとえば単に子を待つ。 */
        int status;
        wait(&status);
        printf("child existed:%d\n", status);
    }
    else
    {
        /* 子プロセス。別のプログラムを実行するなど。 */
        execl("/bin/ls", NULL);
    }
    return EXIT_SUCCESS;
}
リンク
関連する用語
プロセス

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04 (07-Mar-2021)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic