UNIXにおけるfork()関数の役割は、プロセスを複製することです。
fork()関数は、新しくプロセスを作成するために使用され、fork()関数を呼び出した後のオペレーティングシステムは、コードやデータ、スタック、ファイルディスクリプタなど、もとのプロセスとまったく同じプロセスを作成します。新しいプロセスは子プロセスと呼ばれ、元のプロセスは親プロセスと呼ばれます。
fork()関数は、親プロセスのリソースをすべて子プロセスにコピーし、親プロセスのリソース状態をプログラムカウンタ(PC)の値、レジスタの値、メモリの内容などを含めて子プロセスに完全にコピーします。その後、親プロセスと子プロセスは、fork()関数が返された後はそれぞれ独自のコードを実行します。
fork()関数の戻り値で自身が親プロセスか子プロセスか区別できる。親プロセスでは、fork()関数は子プロセスのPID(プロセスID)を、子プロセスでは0を返す。これにより、親プロセスと子プロセスは戻り値の値によって異なるコードを実行する。
fork()関数の利用により、マルチプロセス並列実行機能を実現し、親プロセスと子プロセス間でプロセス間通信とタスク処理を行うことができる。