MSX-DOS2 FCS 03 76

From Z80 Machines Wiki
Jump to: navigation, search

3.76フォークチャイルドプロセス(60H)

パラメータ:C = 60H(_FORK)

結果:A =エラー

B =親プロセスのプロセスID


この機能は、子プロセスが開始されようとしていることをシステムに通知します。通常、これは実行中の新しいプログラムまたはサブコマンドです。たとえば、COMMAND2.COMは、コマンドまたは一時プログラムを実行する前に "fork"関数呼び出しを行います。

ファイルハンドルの新しいセットが作成され、「継承可能な」アクセスモードビットセット(「ファイルハンドルを開く」機能 - 機能43hを参照)で開かれた現在のファイルハンドルが新しいファイルハンドルの組にコピーされます。 「継承可能」ビットをクリアにして開かれたファイルハンドルはコピーされないため、子プロセスでは利用できません。標準のファイルハンドル(00h ... 05h)は継承可能なので、これらはコピーされます。

新しいプロセスIDが子プロセスとプロセスIDに割り当てられます。その後の「join」関数呼び出しが親プロセスに戻ることができるように、親プロセスからの値が返されます。ファイルハンドルを複製するのに十分なメモリがない場合、この関数によって ".NORAM"エラーが発生する可能性があります。

子プロセスは元のファイルではなく前のファイルハンドルのコピーを保持しているため、そのうちの1つを閉じると元のファイルハンドルは開いたままになります。そのため、例えば、子プロセスが標準出力ファイルハンドル(ファイルハンドル番号1)を閉じて新しいファイルに開くと、 "join"関数が親プロセスに戻るときに元の標準出力チャネルが返されます。まだあります。