C 共享段内存写入随机数

C 共享段内存写入随机数,c,memory,process,buffer,shared,C,Memory,Process,Buffer,Shared,我的C程序的逻辑有问题。我正在尝试做一个进程,将10个随机数写入内存缓冲区,并将其写入文本文件中。正如您将在我的代码中看到的那样,我已经有了它,但我似乎不明白如何使用共享内存来实现这一点 我试图理解,我必须首先定义缓冲区大小并将id存储到一个项中,然后我必须将随机数存储在该项数组中。我在想什么事吗? 我的逻辑有什么遗漏吗 以下是我到目前为止的情况: #include <stdio.h> #include <stdlib.h> #include <time.h>

我的C程序的逻辑有问题。我正在尝试做一个进程,将10个随机数写入内存缓冲区,并将其写入文本文件中。正如您将在我的代码中看到的那样,我已经有了它,但我似乎不明白如何使用共享内存来实现这一点

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

以下是我到目前为止的情况:

#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);
}
#包括
#包括
#包括
#包括
#包括
int main()
{
inti,n;
时间;
n=10;
srand((未签名)时间(&t));
文件*fp;
fp=fopen(“letter.txt”,“a+”);
如果(fp==NULL){
printf(“文件未创建正常,错误号=%d\n”,错误号);
返回1;
}
对于(i=0;i
您可以在VM内的多个进程中使用共享内存,但无法在VM中运行的进程和主机O/S、Windows中运行的进程之间共享内存。如果虚拟机正在运行Debian,则需要使用以下选项之一:

  • ,, , , -“System V IPC”共享内存调用
  • ,, -最近的、更像POSIX的共享内存调用

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

    您使用的是哪个平台?哪个函数用于管理该平台上的共享内存段?(例如,POSIX系统上至少有两组共享内存调用,外加
    mmap()
    )您实际尝试了什么?专业提示:在将确定性数据写入共享内存后添加随机化。当数据是随机的时,很难判断你所做的是否正确。您打算如何检查写入共享内存的内容?提示:共享内存通常涉及多个进程,这些进程共享对单个内存块的访问。请注意,零参数的
    scanf()
    调用是一场即将发生的灾难。你至少需要format string参数。哦,我明白了,让我更改我的scanf然后我使用windows,但我也在我的计算机内使用debian vm,并使用putty和nano在debian内写入。。。所以要让两个或多个进程使用一块内存,我必须指向同一个内存地址?