今天遇到一个这样的问题,假设父进程有一个变量S,fork后,子进程中的变量S地址是否和父进程中的变量S

是相同的?

  再学操作系统的时候,知道fork是采用的写时复制,所以如果子进程或者父进程不对变量S做修改的话,它们应该

是指向同一块物理内存,如果有修改,那么它们会指向不同的物理内存,但虚拟内存地址还是相同的,所以在子进程中

输出&S和在父进程中输出&S,结果是一样的。

下面补充两个程序的运行结果:

#include "stdio.h"
#include "unistd.h" int main()
{
int s=;
if(fork()==)
{
//s+=5;
printf("child: %d %x\n",s,&s);
}
else
{
//s-=5;
printf("parent: %d %x\n",s,&s);
}
return ;
}

运行结果:

上面的代码并未修改s的值,下面的代码修改了s的值,此时再测试

#include "stdio.h"
#include "unistd.h" int main()
{
int s=;
if(fork()==)
{
s+=;
printf("child: %d %x\n",s,&s);
}
else
{
s-=;
printf("parent: %d %x\n",s,&s);
}
return ;
}

运行结果:

fork函数的一些小结的更多相关文章

  1. fork()和vfork()的区别,signal函数用法,exec()系列函数的用法小结

    一:fork()和vfork()的区别:    fork()函数可以创建子进程,有两个返回值,即调用一次返回两个值,一个是父进程调用fork()后的返回值,该返回值是刚刚创建的子进程的ID;另一个是子 ...

  2. linux的fork函数

       fork函数  头文件:#include<unistd.h> 函数原型:pid_t fork( void);(pid_t 是一个宏定义,其实质是int 被定义在#include< ...

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

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

  4. 进程间通信--fork函数

    #include <unistd.h> pid_t fork(void); fork() creates a new process by duplicating the calling ...

  5. Fork函数初识

    fork函数用于创建子进程,典型的调用一次,返回两次的函数.其中调用进程返回子进程的PID,而子进程则返回0.但是两个进程的执行顺序是不定的. fork函数调用完成以后父进程的虚拟存储空间被拷贝给了子 ...

  6. fork()函数详解

    原文链接:http://blog.csdn.net/jason314/article/details/5640969  一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函 ...

  7. fork函数

    在Unix/Linux中用fork函数创建一个新的进程.进程是由当前已有进程调用fork函数创建,分叉的进程叫子进程,创建者叫父进程.该函数的特点是调用一次,返回两次,一次是在父进程,一次是在子进程. ...

  8. Linux—fork函数学习笔记

    fork()函数 在赋值语句pid = fork();之前,只有一个进程在执行这段代码,但在这条语句之后,就变成两个进程在执行了,这两个进程的代码部分完全相同.> 两个进程中,原先就存在的那个被 ...

  9. linux fork函数与vfork函数,exit,_exit区别

    man vfork: NAME vfork - create a child process and block parent SYNOPSIS #include <sys/types.h> ...

随机推荐

  1. STL常用结构与方法简明总结

    C++常用的数据结构 序列式容器 vector(向量.有序数列),list(双向链表),deque(双端队列) 适配器容器 stack(栈),queue(队列) 关联式容器 map(映射.键值对二叉树 ...

  2. .NET Core AES-CCM&AES-GCM加密算法

    一. 前言 关于 CCM 以及 GCM 看此文( CCM和GCM )或者直接搜索网上资料. .NET Core 3.0 实现了对AES-GCM和AES-CCM加密的支持.这些算法既是带有关联数据的身份 ...

  3. MySQL数据库:多表连接查询

    多表连接查询 注意:使用连接技术建议将表经行重命名! # explain 检索连接是否达标 # 内连接 # 语法1 from 表1 inner join 表2 on 主键字段=外键字段 [where ...

  4. 第十六届浙江大学宁波理工学院程序设计大赛 E 雷顿女士与平衡树(并查集)

    题意 链接:https://ac.nowcoder.com/acm/contest/2995/E来源:牛客网 卡特莉正在爬树,此时她又在树梢发现了一个谜题,为了不令她分心以至于发生意外,请你帮她解决这 ...

  5. DynamicList

    DynamicList设计要点——类模板 申请连续空间作为顺序存储空间 动态设置顺序存储空间的大小 保证重置顺序存储空间时的异常安全性 DynamicList设计要点——函数异常安全的概念 不泄露任何 ...

  6. dom元素的tabindex属性介绍及在vue项目中的应用

    dom元素的tabindex属性介绍及在vue项目中的应用 tabindex属性作用 让普通dom元素变为可聚焦的元素 让普通dom元素可以参与顺序键盘导航(通常使用Tab键,因此得名). tabin ...

  7. CF1062F Upgrading Cities

    题意 由于这是个\(DAG\),我们考虑拓朴排序,求某个点能到的和能到它的点,这是两个问题,我们可以正反两边拓朴排序,这样就只用考虑它能到的点了 设\(f[x]\)表示\(x\)能到的点数\(+\)能 ...

  8. 3万字长文概述:通俗易懂告诉你什么是.NET?什么是.NET Framework?什么是.NET Core?

    [转载]通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? 什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的 ...

  9. vue-cli3 用natapp 配置时 出现Invalid Host header的解决方案

    natapp 网址:https://natapp.cn/       用户名:137 **** ****   密码:26**_X** natapp 配置: 出现如下错误:Invalid Host he ...

  10. yii2 提示

    控制器中: Yii::$app->getSession()->setFlash('success', "描述!"); Yii::$app->getSession( ...