関数は、次のように呼び出します。
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)