簡體   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