`
kula
  • 浏览: 57575 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • highill: 在baidu上看了 HTML5与FLASH的斗争和前景分析.d ...
    html5和flash
  • interjc: 问题是html5的标准如何才能完全同意,不要到时候搞得群雄割据 ...
    html5和flash
  • evanmeng: 谷歌地图上早就可以利用点评网的数据显示某地周围的餐饮信息。但我 ...
    openapi 简介

fork,vfork和clone的区别

    博客分类:
  • soft
 
阅读更多
fork 返回了两次,一次在父进程,一次在子进程
子进程返回,将返回0.
父进程返回,将返回子进程pid

vfork和fork类似,但前者的父进程一直阻塞,直到子进程调用exit或exec

clone不同于fork和vfork,它接受一个指向函数的指针和该函数的参数。
分享到:
评论

相关推荐

    详解linux中fork、vfork、clone函数的区别

    在Linux操作系统中,`fork()`、`vfork()` 和 `clone()` 都是用于创建新进程的函数,但它们在实现机制和使用场景上存在显著差异。 1. **fork()** `fork()` 是最传统的进程创建方法。它创建一个与父进程完全独立的新...

    linux进程创建详解

    在 ARM 架构下,`fork()`、`vfork()` 和 `clone()` 分别对应于内核中的 `sys_fork()`、`sys_vfork()` 和 `sys_clone()` 函数。这些函数位于 `arch/arm/kernel/sys_arm.c` 文件中,并且最终都调用了 `do_fork()` 函数...

    vfork() 函数详解示例代码

    在实际开发中,由于`vfork()`的复杂性和潜在问题,一般推荐使用更安全、更稳定的`fork()`函数。然而,在某些特定场景,比如当子进程只需要执行`exec()`而不需要额外的初始化工作时,`vfork()`的效率优势可能会被考虑...

    linux内核 do_fork 函数源代码浅析

    do_fork 函数被 sys_fork()、sys_clone() 和 sys_vfork() 等系统调用所调用,以实现进程的复制与创建。 #### 二、do_fork 函数的工作原理 do_fork() 函数主要负责创建一个新的进程,并对其进行初始化。该过程可以...

    linux fork 简单使用

    `vfork()` 与 `fork()` 的主要区别在于,`vfork()` 创建的子进程与父进程共享物理内存,直到子进程调用 `exec()` 或者 `exit()`。这意味着,子进程对共享内存的修改会影响到父进程,直到子进程执行完 `exec()` 或 `...

    结合 linux 0.11 源码分析为什么 fork 函数会返回两个值

    - **vfork()和clone()**:除了`fork()`,Linux还有`vfork()`和`clone()`这两个相关函数。`vfork()`创建的子进程共享父进程的地址空间,直到子进程调用`exec()`或`_exit()`;`clone()`则允许更细粒度的控制进程之间的...

    linux-2.4.0内核源代码

    在内核代码 2.6.15.5中/kernel/fork.c第1255-1261中有如下代码:  1. p = copy_process(clone_flags, stack_start, regs, stack_size, parent_tidptr, child_tidptr, pid);  2. if (!IS_ERR(p)) {  3. struct ...

    Linux内核分析与应用课件第3章(二)进程的创建.pdf

    在用户态函数库中,创建进程和创建线程调用了不同的函数,分别为fork()和pthread_create(),对应的系统调用为fork()和clone()。而在内核中,所有的系统调用都通过do_fork()函数来实现进程和线程的创建。do_fork()...

    简单介绍Python中利用生成器实现的并发编程

    多线程编程python中有Thread和threading,在linux下所谓的线程,实际上是LWP轻量级进程,其在内核中具有和进程相同的调度方式,有关LWP,COW(写时拷贝),fork,vfork,clone等的资料较多,这里

    4. 进程的创建、执行与终止1

    本文将深入探讨这一主题,重点关注`fork`、`vfork`和`clone`这三个系统调用,以及进程终止时`exit`和`_exit`的区别。 首先,`fork`是一个创建新进程的系统调用。它通过复制当前进程(父进程)的状态来创建一个子...

    分析Linux内核创建一个新进程的过程

    除了fork()函数外,Linux内核还提供了vfork()和clone()系统调用。vfork()函数与fork()函数类似,但它不允许子进程执行exec()函数,直到父进程调用wait()函数或者exit()函数。clone()函数则可以创建一个新的进程,...

    操作系统实验指导书-实验三(发布版).pdf

    进程创建是通过fork、vfork或clone等系统调用来实现的。这些系统调用最终都会调用do_fork函数来创建新的进程。而进程的终止是由进程自己或其父进程通过系统调用exit或_exit来实现的。进程终止后,系统会回收其资源,...

    Linux-UNIX系统编程手册中文版.rar

    2. **进程管理**:涵盖进程创建(fork, vfork, clone)、进程通信(管道、消息队列、共享内存、信号量)、进程同步与互斥(如信号、条件变量、锁等)。 3. **线程编程**:讲解线程创建、线程同步(互斥锁、读写锁、...

    Linux进程、线程和调度(2)

    这些机制包括fork()、vfork()、clone()、写时拷贝技术(COW)、SUBREAPER等等,它们共同构成了Linux进程调度的丰富知识体系。通过这些机制,用户可以灵活地设计和实现程序,实现高效率的多任务处理。

    linux kernel api 2.6.20

    1. 进程管理:包括进程创建(fork, vfork, clone)、进程控制(signal, waitpid)、线程管理(pthread_create, pthread_join)等,为多任务环境提供了基础。 2. 内存管理:如malloc, free等动态内存分配函数,以及...

    Linux内核API完全参考手册 第2版

    1. **进程管理**:包括进程创建(fork、vfork、clone)、进程控制(waitpid、wait4)、进程间通信(信号、管道、消息队列、共享内存)等。 2. **内存管理**:涉及虚拟内存、物理内存的分配与释放,内存映射(mmap、...

    linux 环境高级编程

    2. **进程管理**:理解进程的生命周期,包括创建(fork, vfork, clone)、执行(execve系列)、通信(管道、消息队列、共享内存)以及终止(exit, kill)等过程,对于编写高效、稳定的程序至关重要。 3. **文件系统...

    嵌入式Linux应用程序开发详解_linux_

    7. **第七章 进程控制开发**:进程是Linux中的基本执行单元,本章会涉及进程创建(fork, vfork, clone)、进程间通信(pipe, FIFO, socketpair, message queue, semaphore等)和信号处理。 8. **第十章 嵌入式Linux...

    Linux内核源代码情景分析.pdf

    第4章进程与进程调度深入探讨了进程的四要素,进程创建、执行与消亡的过程,以及系统调用fork、vfork、clone、execve、exit、wait的使用。文档还分析了进程的调度与切换、强制性调度、系统调用nanosleep和pause、...

    linux makefile

    在Linux中,`fork()`, `vfork()`, 和 `clone()`是创建新进程的系统调用。它们都调用`do_fork()`函数,但参数差异决定了新进程与父进程之间的资源继承关系。`clone_flags`参数包含了一系列标志,如`SIGCHLD`信号代码...

Global site tag (gtag.js) - Google Analytics