Clone (Linux System Call)

clone is a system call in the Linux kernel that creates a child process that may share parts of its execution context with the parent. It is often used to implement multithreading. In practice, clone is not often called directly, but instead using a threading library (such as pthreads) that uses clone when starting a thread (such as during a call to pthread_create).

The syntax for calling clone under a Linux program is:

#include int clone (int (*fn) (void *), void *child_stack, int flags, void *arg);

clone creates a new thread that starts with the function pointed to by the fn argument (as opposed to fork which continues with the next command after fork.) The child_stack argument is a pointer to a memory space to be used as the stack for the new thread (which must be malloc'ed before that; on most architectures stack grows down, so the pointer should point at the end of the space), flags specify what gets inherited from the parent process, and arg is the argument passed to the function. It returns the process ID of the child process or -1 on failure.

Famous quotes containing the words clone and/or system:

    Each writer is born with a repertory company in his head. Shakespeare has perhaps 20 players, and Tennessee Williams has about 5, and Samuel Beckett one—and maybe a clone of that one. I have 10 or so, and that’s a lot. As you get older, you become more skillful at casting them.
    Gore Vidal (b. 1925)

    For the universe has three children, born at one time, which reappear, under different names, in every system of thought, whether they be called cause, operation, and effect; or, more poetically, Jove, Pluto, Neptune; or, theologically, the Father, the Spirit, and the Son; but which we will call here, the Knower, the Doer, and the Sayer. These stand respectively for the love of truth, for the love of good, and for the love of beauty.
    Ralph Waldo Emerson (1803–1882)