我想将管道句柄发送到其他进程。要发送指针,我将其转换为字符串。
sprintf(handleToChar, "%p", handle);
因此,如果句柄的值为0x00043c
,则会得到"00043c"
的内存。我发了。
我以"00043c"
的正确形式收到它。
我无法将其转换回来。我再次尝试使用sprintf,但这是错误的,因为我后来意识到了。
sprintf((char*)handle, "%s", handleToChar); // <-- wrong
我认为atoi
会做,但字符串中也可能有字符。所以它又失败了。
我该怎么做?
答案 0 :(得分:2)
你根本做不到。无法在进程之间共享地址。
如果要在两个进程之间共享资源,则必须创建共享资源,或者保存/发送其他数据,以便其他进程可以创建自己的句柄。
答案 1 :(得分:0)
尝试使用boost interprocess,可以创建共享内存