The title given to this article is incorrect due to technical limitations. The correct title is "fork".
A fork, when applied to computing is when a process creates a copy of itself, which then acts as a "child" of the original process, now called the "parent". More generally, a fork in a multithreading environment means that a thread of execution is duplicated.
Under Unix and Unix-like operating systems, the parent and the child operations are selected by use of the return value of fork().
Example
Here is some sample C programming language code to illustrate the idea of forking. The code that is in the "Child process" and "Parent process" sections are executed simultaneously.
int i, pid; pid = fork(); if(pid == 0) { /* Child process: * When fork() returns 0, we are in * the child process. * Here we count up to ten, one each second. */ int j; for(j=0; j < 10; j++) { printf("child: %d n", j); sleep(1); } _exit(0); /* Note that we do not use exit() */ } else if(pid > 0) { /* Parent process: * Otherwise, we are in the parent process. * Again we count up to ten. */ int i; for(i=0; i < 10; i++) { printf("parent: %d n", i); sleep(1); } } else { /* Error handling. */ fprintf(stderr, "couldn't fork"); exit(1); }
A fork, when applied to computing is when a process creates a copy of itself, which then acts as a "child" of the original process, now called the "parent".
More generally, a fork in a multithreading environment means that a thread of execution is duplicated.
Forking is an important part of Unix, critical to the support of its design philosophy, which encourages the development of filters.
Fork beam (Shipbuilding), a half beam to support a deck, where hatchways occur.
The forks of a river or a road, the branches into which it divides, or which come together to form it; the place where separation or union takes place.
A fork followed by an exec can be used to start a different process but this can be inefficient and some later Unix variants provide vfork as an alternative mechanism for this.