0

我想将管道句柄发送到其他进程。为了发送指针,我将它转换为字符串。

   sprintf(handleToChar, "%p", handle);

所以如果句柄的值是0x00043c我得到一个内存"00043c"。我发了。

我以正确的形式收到它"00043c"

我无法将其转换回来。我再次尝试使用 sprintf,但我后来意识到这是错误的。

 sprintf((char*)handle, "%s", handleToChar); // <-- wrong

我认为atoi可以,但字符串中也可以有字符。所以它又失败了。

我该怎么做 ?

4

2 回答 2

2

你根本做不到。地址不能在进程之间共享。

如果要在两个进程之间共享资源,则必须创建共享资源,或者保存/发送其他数据,以便其他进程可以创建自己的句柄。

于 2013-10-09T08:03:25.510 回答
0

试试boost interprocess,可以创建共享内存

于 2014-02-03T13:45:29.720 回答