Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Ubuntu在两个进程之间共享内存,代码不工作_C++_Ubuntu_Memory_Posix_Shared - Fatal编程技术网

C++ Ubuntu在两个进程之间共享内存,代码不工作

C++ Ubuntu在两个进程之间共享内存,代码不工作,c++,ubuntu,memory,posix,shared,C++,Ubuntu,Memory,Posix,Shared,我正在分别编写两个进程,它们应该通过共享内存进行交互,我无法发现哪里出了问题。第一个进程肯定创建了共享内存,如果重新编程,它也可以读取共享内存 然而,第二个输出程序似乎根本无法读取它。我在两个程序中都使用shmget来创建内存,然后加入它。我用输入程序插入char数组nameArray,然后输出应该从共享内存中读取它并输出名称 感谢您的帮助,代码如下:) 输入: #include <iostream> #include <sys/types.h> #include <

我正在分别编写两个进程,它们应该通过共享内存进行交互,我无法发现哪里出了问题。第一个进程肯定创建了共享内存,如果重新编程,它也可以读取共享内存

然而,第二个输出程序似乎根本无法读取它。我在两个程序中都使用shmget来创建内存,然后加入它。我用输入程序插入char数组nameArray,然后输出应该从共享内存中读取它并输出名称

感谢您的帮助,代码如下:)

输入:

#include <iostream>
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#define SHM_KEY 982
using namespace std;

main()
{
    int shmid;
    char nameArray[] = "Bill Gates";
    unsigned length = sizeof(nameArray)/sizeof(nameArray[0]);
    shmid=shmget(SHM_KEY,256,0777|IPC_CREAT);

    if(shmid!=(-1))     /*Error checking measure to ensure shared memory creation was successful*/
    {
        char * ptr=(char *)shmat(shmid,0,0);    /*Assigns the char pointer to the start of shared memory*/

        for(int i=0; i<length;i++)      /*For every letter in the nameArray*/
        {
            ptr=(char *)shmat(shmid,0,i);
            *ptr=nameArray[i];      /*Sends the local char array to shared memory*/
        }
    }
    else    /*Displays Error message given shared memory creation failue*/
    {
        cout << "Sorry, shared memory creation failed"
    }
}       
#include <iostream>
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#define SHM_KEY 982
using namespace std;

main()
{
    int shmid;
    char nameArray[20];
    shmid=shmget(SHM_KEY,256,0777|IPC_CREAT);

    if(shmid!=(-1)) /*Error checking measure to ensure shared memory creation was successful*/
    {
        char * ptr=(char *)shmat(shmid,0,0);

        for(int i=0; i<11;i++)
        {
            cout << *((char *)shmat(shmid,0,i));
        }

    }
    else{}
}       
#包括
#包括
#包括
#包括
#定义SHM_键982
使用名称空间std;
main()
{
int shmid;
char nameArray[]=“比尔·盖茨”;
无符号长度=sizeof(nameArray)/sizeof(nameArray[0]);
shmid=shmget(SHM_键,2560777 | IPC|u创建);
if(shmid!=(-1))/*错误检查措施,以确保共享内存创建成功*/
{
char*ptr=(char*)shmat(shmid,0,0);/*将char指针指定给共享内存的开始*/
对于(int i=0;i代码

    for(int i=0; i<length;i++)      /*For every letter in the nameArray*/
    {
        ptr=(char *)shmat(shmid,0,i);
        *ptr=nameArray[i];      /*Sends the local char array to shared memory*/
    }
在另一个程序中也有类似的更改。

代码

    for(int i=0; i<length;i++)      /*For every letter in the nameArray*/
    {
        ptr=(char *)shmat(shmid,0,i);
        *ptr=nameArray[i];      /*Sends the local char array to shared memory*/
    }
在另一个程序中也有类似的更改。

代码

    for(int i=0; i<length;i++)      /*For every letter in the nameArray*/
    {
        ptr=(char *)shmat(shmid,0,i);
        *ptr=nameArray[i];      /*Sends the local char array to shared memory*/
    }
在另一个程序中也有类似的更改。

代码

    for(int i=0; i<length;i++)      /*For every letter in the nameArray*/
    {
        ptr=(char *)shmat(shmid,0,i);
        *ptr=nameArray[i];      /*Sends the local char array to shared memory*/
    }

和另一个程序中的类似更改。

shmid
返回什么?此
shmid
返回什么?此
shmid
返回什么?此
shmid
返回什么