首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >写随机数的共享段存储器

写随机数的共享段存储器
EN

Stack Overflow用户
提问于 2014-09-05 00:02:56
回答 1查看 314关注 0票数 0

我的C程序有一个逻辑上的问题。我正在尝试制作一个进程,它可以写入内存缓冲区,比如10个随机数,也可以在文本文件中写入。正如你将在我的代码中看到的,我已经有了它,但是我似乎不能理解如何使用共享内存来做到这一点。

我试图理解,我必须首先定义一个缓冲区大小,并将id存储到一个项中,然后我必须将我的随机数存储在该项数组中。我是不是想错了?我是不是在逻辑上漏掉了什么?

这是我到目前为止所知道的:

代码语言:javascript
运行
复制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <fcntl.h>
#include <errno.h>
int main()
{

    int i, n;
    time_t t;

     n = 10;

    srand((unsigned) time(&t));

    FILE *fp;
    fp = fopen ("letter.txt","a+");
    if (fp == NULL) {
        printf ("File not created okay, errno = %d\n", errno);
        return 1;
    }
    for( i = 0 ; i < n ; i++ ) {
        fprintf(fp,"%d\n", rand() % 10);


        /* here is where I would store the random numbers in the buffer */
    }

    fclose (fp);
    printf ("File created okay\n");
    scanf();
    return(0);
}
EN

回答 1

Stack Overflow用户

发布于 2014-09-05 01:48:12

您可以在VM内的多个进程中使用共享内存,但不能在VM中运行的进程和主机O/S、Windows中运行的进程之间共享内存。如果虚拟机运行的是Debian,则需要使用以下选项之一:

  1. mmap().
  2. shmget()shmctl()shmat()shmdt() - 'System V IPC‘共享内存shm_unlink() -更新的,更像POSIX的共享内存调用。

您可能需要两个连接到同一共享内存段的程序。它们很可能会将数据段映射到相同的地址。如果您将指针存储在共享内存中,则将它们映射到相同的地址是至关重要的。如果存储相对于共享内存段的基地址的偏移量,那么将它们映射到相同的地址并不重要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25670120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档