Процессы в системе
Рассказ о жизни процессов естественно начать с самого начала - с их появления на свет. Так вот, процессы размножаются... почкованием: системный вызов Linux, создающий новый процесс, называется clone, а дочерний процесс представляет собой почти точную копию родительского. Только далее он выполняет назначенную ему функцию, а исходный процесс - то, что написано в программе после вызова clone. Потом отличий может стать больше, так что пути-дороги процессов способны разойтись достаточно далеко. Но если нам нужно этому воспрепятствовать, вызов clone позволит задать флаги, указывающие, что порожденный процесс будет иметь со своим предком общие:
- адресное пространство (CLONE_VM);
- информацию о файловой системе (CLONE_FS): корневой и текущий каталоги, а также umask;
- таблицу открытых файлов (CLONE_FILES);
- таблицу обработчиков сигналов (CLONE_SIGHAND);
- родителя (CLONE_PARENT) - конечно, в этом случае будет порожден не дочерний, а сестринский процесс.