原文链接:http://blog.csdn.net/jason314/article/details/5640969#comments

总结:面宝P268

  fork()的意思是进程从这里开始分叉,分成两个进程:一个父进程,一个子进程。子进程拷贝了父进程的绝大部分(栈、缓冲区等等)。虽然父子进程共享代码空间,但是在涉及写数据时,子进程有自己的数据空间。

  父进程中fork()返回新建子进程的进程ID;子进程中fork()返回0;如果出错,fork()返回负值。

  相关函数:getppid 获取父进程ID;getpid 获取本进程ID。

注意:父子两进程的执行顺序不固定,要看调度策略。

注意:

printf("fork!");
fork();

这段代码,缓冲区内的“fork!”也被子进程复制了,之后子进程打印也有fork!(这是我们不希望看到的),可做如下修改:

printf("fork!\n");//\n符号使得代码立即打印,同时缓冲区不再有fork!
fork();

【转】linux中fork()函数详解的更多相关文章

  1. 【转】linux 中fork()函数详解

    在看多线程的时候看到了这个函数,于是学习了下,下面文章写的通俗易懂,于是就开心的看完了,最后还是很愉快的算出了他最后一个问题. linux 中fork()函数详解 一.fork入门知识 一个进程,包括 ...

  2. Linux中fork()函数详解(转载)

    linux中fork()函数详解 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事, ...

  3. linux中fork函数详解(转)

    add by zhj: 在Linux,创建进程是用fork(),它其实就是拷贝父进程的数据段和其它数据,这相当于C函数调用中的值传递,这是 此后两者的修改都互不影响.因为两者的数据虽相同,但却在不同的 ...

  4. Linux中fork()函数详解(转)

    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同, ...

  5. Linux中fork()函数详解

    一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同 ...

  6. Linux环境fork()函数详解

    Linux环境fork()函数详解 引言 先来看一段代码吧, 1 #include <sys/types.h> 2 #include <unistd.h> 3 #include ...

  7. Linux C 中 fork() 函数详解

    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork() 函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同 ...

  8. 知识点查缺补漏贴02:Linux环境fork()函数详解

    引言 先来看一段代码吧, #include <sys/types.h> #include <unistd.h> #include <stdio.h> #includ ...

  9. linux之fork()函数详解

    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同 ...

  10. linux的system () 函数详解

    linux的system () 函数详解     system(执行shell 命令)相关函数        fork,execve,waitpid,popen表头文件        #i nclud ...

随机推荐

  1. K8s之Projected Volume

    四种:Secret .ConfigMap.Downward API.ServiceAccountToken 1.Secret Secret:帮你把Pod想要访问的加密数据,存放到Etcd中,然后,通过 ...

  2. 非常好的一个JS代码(RelativePosition.js)

    var RelativePosition = function(){ function getLeft( align, rect, rel ){ var iLeft = 0; switch (alig ...

  3. XML 基本概念和XPath选择

    books.xml文件 <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> ...

  4. PTA(Basic Level)1016.部分A+B

    正整数 A 的"*D**A(为 1 位整数)部分"定义为由 A* 中所有 *D**A* 组成的新整数 PA.例如:给定 A=3862767,DA=6,则 A 的"6 部分 ...

  5. PHP中的data()函数

    date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考. 格式化日期date() 函数的第一个参数规定了如何格式化日期/时间.它使用字母 ...

  6. Spring 启动时加载资源

    Spring加载资源文件目前了解三种, @PostConstruct在Context加载完成之后加载.在创建各个Bean对象之前加载. 实现ApplicationRunner的run方法,Bean加载 ...

  7. DFS搜索算法--(1)基础图遍历 绝对看!的!懂!

    内容总结 自<啊哈!算法!> 作为一个都大二的了一个菜鸡,做题的时候DFS怎么可以不会呢!!! 作为一个都大二了的(!!!)菜鸡....<啊哈算法>这本书第四章的搜索,开始那里 ...

  8. win10 远程桌面ubuntu16

    一. 软件安装 1.1. 打开终端,安装xrdp,vncserver sudo apt-get install xrdp vnc4server xbase-clients 1.2. desktop s ...

  9. 学习django: 庄园漫步

    最近在阅读django的资料. 发现一个系列写得很好. <被解放的姜戈> 作者:Vamei     出处:http://www.cnblogs.com/vame 感谢大神指路呀~

  10. API 网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd

    前几天拜读了 OpsGenie 公司(一家致力于 Dev & Ops 的公司)的资深工程师 Turgay Çelik 博士写的一篇文章(链接在文末),文中介绍了他们最初也是采用 Nginx 作 ...