【发布时间】:2017-05-25 06:34:22
【问题描述】:
不久前,我有一个简单的进程间通信的想法:一个进程将地址输出到指针,我将其复制到另一个进程的输入,然后更改原始变量。
我是这样实现的:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
bool p;
cin>>p;
if(p){
int n;
n=0;
cout<<&n;
cin.get();
cin.get();
cout<<n;
}else{
int *point,n;
scanf("%p",&point);
cout<<point;
cin>>n;
*point+=n;
}
return 0;
}
我使用 scanf 是因为 cin 抱怨,并且无法编译。我试图用两个进程运行它,但是在我启动第二个实例并输入指针的地址后,如第一个输出的那样,它冻结了。由于我只能访问 Windows,我不知道它是否获得了 SIGSEGV,或者它是否做了一些完全不同的事情。
是我试图改变另一个进程的变量的值导致它崩溃,还是其他什么东西阻止了我?
【问题讨论】:
-
这行不通,但是有一个 Windows API 可以做这样的事情 - 请参阅 ReadProcessMemory/WriteProcessMemory et al。
标签: c++ windows interprocess