linux的Clone()函数详解

    xiaoxiao2021-03-25  101

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

     

    这里fn是函数指针,我们知道进程的4要素,这个就是指向程序的指针,就是所谓的“剧本", child_stack明显是为子进程分配系统堆栈空间(在Linux下系统堆栈空间是2页面,就是8K的内存,其中在这块内存中,低地址上放入了值,这个值就是进程控制块task_struct的值),flags就是标志用来描述你需要从父进程继承哪些资源, arg就是传给子进程的参数)。下面是flags可以取的值

    标志含义

      CLONE_PARENT   创建的子进程的父进程是调用者的父进程,新进程与创建它的进程成了“兄弟”而不是“父子”

      CLONE_FS           子进程与父进程共享相同的文件系统,包括root、当前目录、umask

      CLONE_FILES      子进程与父进程共享相同的文件描述符(file descriptor)表

      CLONE_NEWNS   在新的namespace启动子进程,namespace描述了进程的文件hierarchy

      CLONE_SIGHAND   子进程与父进程共享相同的信号处理(signal handler)表

      CLONE_PTRACE   若父进程被trace,子进程也被trace

      CLONE_VFORK     父进程被挂起,直至子进程释放虚拟内存资源

      CLONE_VM           子进程与父进程运行于相同的内存空间

      CLONE_PID          子进程在创建时PID与父进程一致

      CLONE_THREAD    Linux 2.4中增加以支持POSIX线程标准,子进程与父进程共享相同的线程群

    -------------------------------------------------------------------------以上为本人转载,以下为本人所查资料。------------------------------------------------------------

    转载请注明原文地址: https://ju.6miu.com/read-33563.html

    最新回复(0)