fork的共享内存

2023-12-15

我想在两个进程之间创建共享内存。我用了fork()。一个孩子试图改变这个共享的记忆,而母亲又创造了另一个孩子,所以新的孩子试图改变相同的记忆,依此类推。这是我的 C 编程代码。 (Ubuntu)

mylist ch=NUL; 
f=fork();
if(!f){
        pba=shmget(KEYSHM,sizeof(char),0); /*created shared memory*/
        ch=(mylist *) shmat(pba,0,0);
        ch->name=ugur;
        ch->surname=cedric;
...do something...
}
else{
        if(ch)
        printf("this is top of mylist %s"ch->name);
.......do something
}

它从不写 ch->name。为什么?我创建了一个共享记忆。为什么父进程无法读取?


为了共享内存,父进程和子进程必须访问相同的共享内存。

你有两个选择,一个更简单,一个更难:

  • 在分叉之前创建并附加到共享内存。父级和子级都自动可以访问相同的共享内存。

  • 首先分叉,然后父级和子级必须分别附加到共享内存。一旦进程分叉,它们就不再共享内存,特别是在子进程中分配的任何内容在父进程中都无法访问。

您需要分配超过 1 个字符的共享内存来存储有用的字符串,例如名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fork的共享内存 的相关文章

随机推荐

  • (char *) x 或 (void *) z 是什么意思?

    I know char x意味着指向 char 的指针 但我对什么感到困惑 char x means 这是一个演员阵容 您正在指示编译器处理x就好像它是一个char 无论其真实类型如何 仅当您真正知道自己在做什么时才应使用强制转换 对于某些
  • CSS3 多重变换

    我有一个 css3 动画 我使用下面的代码在 X 轴上旋转立方体 webkit keyframes spin2 from webkit transform rotateX 135deg to webkit transform rotateX
  • 安装因错误而失败 (Eclipse)

    当我尝试安装安装完成时出现错误 安装失败并出现错误 显示日志 即使我以管理员身份运行它也会发生这种情况 我使用的是 Windows 7 Professional 64 位 当我单击显示日志时 这就是我的情况看 2017 04 03 20 3
  • Apache-Ignite 集成作为 Hibernate 二级缓存未启动?

    我正在尝试将 Apache Ignite 设置为我的项目中的第二级 Hibernate 缓存提供程序 但我遇到了一个奇怪的异常 配置如下 POM xml Added
  • ggplot 中其他点的图例

    举这个问题的例子 Link 我想问是否可以在图例中添加额外的蓝点 dat lt data frame cond rep c A B each 10 xvar 1 20 rnorm 20 sd 3 yvar 1 20 rnorm 20 sd
  • 如何将变量从 php 发送到 Android 应用程序?

    大家好 我当前的 Android 应用程序中有一个活动 其中有一个网络视图 我想知道如何从该网站上的 php 获取变量并将其存储到我的 android 应用程序上的变量中 是的 我控制该网站 并且具有完整的编辑功能 我会解释一般需要做的事情
  • 在 OSX 上隐藏 Tkinter 应用程序的控制台

    当我启动基于 GUI Tkinter 的应用程序时 我试图隐藏终端 但是当我双击 OSX 上的 app py 文件时 会出现终端窗口 我尝试将扩展名更改为 pyw 并尝试使用 usr bin pythonw 启动它 但无论如何 终端窗口仍然
  • 无法快速移动键盘视图iOS9

    我需要实现一个拒绝键盘 向下滑动以拒绝 就像 iOS 上的股票消息应用程序中的键盘一样 我有这段代码来获取键盘视图 func keyboardWillShowWithNotification notification NSNotificat
  • 为什么 JQuery ajax 调用后页面会重新加载?

    我的目录如下 根目录 Create php根 资源 js ajaxLibrary js 在我的 create php 文件中 我有一个如下所示的表单
  • 使用位图的列表视图

    我一直在尝试创建列表视图的位图 其中整个列表视图在屏幕上不可见 我在用 Bitmap mBitmap fullView getDrawingCache 创建位图 它适用于屏幕上可见的列表视图部分 但不适用于不可见的部分 我想知道是否可以创建
  • 我可以使用 localhost 在 SDK 中测试 XMLHttpRequest() 吗?

    以下代码似乎不起作用 因为当我尝试在 Google App Engine Python 中获取 选择器 时 它是未定义的 chooser self request get chooser self response out write ch
  • 即使应用程序未运行,也处理 onMessageReceived() 和 onTokenRefresh()

    我有一个包含 2 项服务的应用程序 MessagingService extends FirebaseMessagingService and InstanceIDService extends FirebaseInstanceIdServ
  • 单元格上的 VBA 通配符搜索

    我正在尝试在单元格值中使用通配符搜索来查找某些内容 如果sheet FC Range I2 I LastRowC 中的值 与Sheets Instr Range A130 A190 匹配 表示如果少数字符与上述其他范围匹配 则表 Instr
  • NHibernate 配置连接到 Visual FoxPro 8.0?

    好奇是否有人曾经将 NHibernate 连接到 Visual Foxpro 8 0 我希望连接到遗留数据存储 并且更愿意使用 NHibernate 而不是必须手动编码所有 ADO Net 如果有人有 FoxPro 8 连接的配置 XML
  • 组装为什么lea快?

    我和我的教授交谈过 他说 leaq rax rax 8 比以下速度更快 imulq 9 rax 我问他为什么 在这两种情况下 我们都用几乎相同的数字进行乘法 他说我们不会讨论这个 有人可以帮助我简单地理解为什么 leaq 总体上很快吗 评论
  • 使用页面工厂设计和页面对象模型进行测试,使用 Selenium 和 Java 打开浏览器的两个实例

    我在 Selenium WebDriver 中使用页面对象模型进行了测试 如果我运行以下测试 在 Chrome 浏览器中打开两个窗口 第一个窗口在 URL 行中为空 如何只打开一个带有 onet pl URL 的内容 我尝试删除 Chrom
  • Hibernate 抛出 MultipleBagFetchException - 无法同时获取多个包

    Hibernate 在 SessionFactory 创建期间抛出此异常 org hibernate loader MultipleBagFetchException 无法同时获取多个包 这是我的测试用例 父类 java Entity pu
  • Firebase Storage putBytes 抛出 StorageException:无法上传到 getRoot

    我有以下方法尝试将图像作为字节数组上传到 Kotlin 中的 firebase 存储 但它抛出 StorageException private val storageReference Firebase storage reference
  • Javascript - 使用 for...in 迭代对象时遇到问题

    我有一个动态生成的对象 如下所示 colorArray AR 8BBDE1 AU 135D9E AT 8BBDE1 我试图用它来为地图着色这个插件以及调用插件期间的 颜色 属性 像这样 iniDensityMap vectorMap bac
  • fork的共享内存

    我想在两个进程之间创建共享内存 我用了fork 一个孩子试图改变这个共享的记忆 而母亲又创造了另一个孩子 所以新的孩子试图改变相同的记忆 依此类推 这是我的 C 编程代码 Ubuntu mylist ch NUL f fork if f p