Sun Studio 12: Fortran ライブラリ・リファレンス

1.4.12 fork: 現プロセスのコピーの生成

関数は、次のように呼び出します。

INTEGER*4 fork

n = fork()

戻り値 

INTEGER*4

出力 

n>0: n= コピーのプロセス ID

n<0, n= システムエラーコード

fork 関数はそれを呼び出したプロセスのコピーを生成します。元のプロセスとコピーとの違いは、元のプロセス (親プロセスと呼ばれる) に返される値がコピーのプロセス ID であるということだけです。コピーは一般に子プロセスと呼ばれます。子プロセスに返される値はゼロです。

書き込み用に開いているすべての論理装置は、fork が実行される前にフラッシュされます。これは、入出力バッファーの内容が外部ファイルに重複して書き込まれるのを防ぎます。

例: fork():


       INTEGER*4 fork, pid
       pid = fork()
       if(pid.lt.0) stop 'フォーク失敗'
       if(pid.gt.0) then
              print *, '親プロセス'
       else
              print *, '子プロセス'
       endif

fork ルーチンと対をなす exec ルーチンは提供されていません。これは論理装置を開いたままで exec ルーチンに渡せる良い方法がないためです。ただし、system(3F) を使用すれば fork/exec の通常の機能を実行することができます。参照: fork(2)、wait(3F)、kill(3F)、system(3F)、および perror(3F)