fork

fork プロセスの複製を作る. 引数はなし.
成功した場合
・親プロセス > 0
・子プロセス == 0
・失敗した場合 ー1

#include<unistd.h>
pid_t fork(void);
                        
forkを実行すると同じプロセスが走り出す.
複製されたプロセスの実行位置はforkの次文から.
#include<sys/types.h>
#include<sys/wait.h>

pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);
waitは子プロセスの終了を待つシステムコールです.
下の実行例では, 子プロセス終了後に親プロセスが実行されています.


fork example

/* fork.c */
#include<stdio.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<stdlib.h> /* exit */
#include<unistd.h>

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

    if((pid = fork()) == EOF) {
        perror("fork");
        exit(1);
    }
    if(pid > 0) {
        wait(&status);
        printf("Mother Process...(PID:%d)\n", getpid());
    }

    else if (pid == 0)
        printf("Child Process...(PID:%d)\n", getpid());

    return 0;
}
                            
実行例

$ ./fork
Child Process...(PID:5450)
Mother Process...(PID:5449)