是否可以input一个地址到标准input指针?

不久之前,我对一些简单的进程间通信有了一个想法:一个进程向一个指针输出一个地址,我把它复制到另一个进程的input,并且改变了原来的variables。

我像这样实现它:

#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抱怨,不会编译。 我试图用两个进程来运行它,但是在我启动了第二个实例之后,input了第一个输出的指针地址,它就冻结了。 因为我只能访问Windows,所以我不知道它是否有SIGSEGV,或者它是否完全不同。

难道只有我试图改变另一个正在崩溃的进程variables的价值,还是其他的东西阻止了我?

你不能这样做,因为第一个进程将无法访问第二个进程的内存地址空间(在常见的操作系统中,包括Windows和Linux)。

每个进程都有自己的内存,与其他进程完全分开。 一个指针的值在一个不同的进程的上下文中是没有意义的,即使你设法通过它。