繁体   English   中英

如何将指向某个程序的指针发送到另一个程序?

[英]How can I send a pointer to something from one program to another?

我有一个程序可以创建对象“图”,并用数据填充它们。 之后,我尝试将指向这些对象的指针发送到diagram.exe,以便绘制图表。 我使用_spawnv,并且diagram.exe获得的指针与我发送的指针不同。 我做错了什么? 有没有更合适的方法呢? 提前致谢。

//这是调用diagram.exe的程序

#include<conio.h>
#include<math.h>
#include<process.h>
#include<iostream>
using std::cout;
using std::endl;


int main()
{
    Diagram** diagrams = new Diagram*[2];
    diagrams[0] = new Diagram(1001, "sin(x)");
    diagrams[1] = new Diagram(150, "atan(x)");
    diagrams[2] = NULL;

    double x = -2.0;
    for(int i = 0; i < 1001; i++)
    {
        diagrams[0]->points[i].x = x;
        diagrams[0]->points[i].y = sin(x);
        diagrams[0]->points[i].flag = true;
        diagrams[0]->points[i].radius = 4;

        diagrams[1]->points[i].x = x;
        diagrams[1]->points[i].y = atan(x);
        diagrams[1]->points[i].flag = true;
        diagrams[1]->points[i].radius = 5;

        x += 0.004;
    }

    cout << "CallDiagram.exe: diagrams: " << (void*)diagrams << endl;

    char* args[3] = {"diagram.exe", (char*)diagrams, NULL};
    _spawnv(_P_WAIT, "..\\..\\diagram\\Debug\\diagram.exe", args);

    _getch();

    delete diagrams[0];
    delete diagrams[1];
    delete [] diagrams;

    return 0;
}

//diagram.cpp

#include "diagram.h"
#include "DrawDiagram.h"


int main(int argc, char* argv[])
{
    if(argc <= 1)
    {
        cout << "\ndiagram.exe: No arguments!" << endl;
        return 1;
    }

    Diagram** diagrams = (Diagram**)argv[1];//NULL;
    cout << "diagram.exe: diagrams: " << (void*)diagrams << endl;

在此处输入图片说明

您不能将指针从一个程序发送到另一个程序。 您可以创建一些共享内存,这两个应用程序都可以打开该共享内存,并使用该共享内存存储要共享的数据。

在Windows上,您可以使用CreateFileMapping创建这样的共享内存,第二个应用程序使用OpenFileMapping在另一端获取它。

请注意,这比在文件中发送数据更容易,因为在另一部分尝试使用数据之前,您需要确保数据已同步并完全写入共享内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM