作者:dfdzgf_542 | 来源:互联网 | 2023-02-02 23:43
不久之前,我有一个简单的进程间通信的想法:一个进程向指针输出一个地址,我将其复制到另一个进程的输入,并更改原始变量.
我这样实现了:
#include
#include
using namespace std;
int main()
{
bool p;
cin>>p;
if(p){
int n;
n=0;
cout<<&n;
cin.get();
cin.get();
cout<>n;
*point+=n;
}
return 0;
}
我使用scanf是因为cin抱怨,并且不会编译.我尝试用两个进程运行它,但在我启动第二个实例后,输入指针的地址,如第一个输出的那样,它就冻结了.因为我只能访问Windows,所以我不知道它是否有SIGSEGV,或者它是否做了完全不同的事情.
是不是只是我试图改变另一个进程崩溃的变量的值,还是其他阻止我的东西呢?
1> syntagma..:
你不能这样做,因为第一个进程将无法访问第二个进程的内存地址空间(在常见的操作系统中,包括Windows和Linux).