2013-10-09 74 views
0

我想將管道句柄發送到其他進程。要發送指針,我將它轉換爲字符串。從char *到Handle

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

因此,如果手柄的價值是0x00043c我得到"00043c"內存。我發了。我收到"00043c"的正確格式。

我無法將其轉換回來。我再次嘗試使用sprintf,但後來我意識到這是錯誤的。

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

我認爲atoi會做,但字符串中也可能有字符。所以它再次失敗。

我該怎麼辦?

+0

這根本不是它的工作原理。閱讀虛擬地址空間 - 每個進程都有自己的。 –

回答

2

你根本做不到。地址不能在進程之間共享。

如果您想要在兩個進程之間共享資源,您必須創建共享資源或保存/發送其他數據,以便其他進程可以創建自己的句柄。

+0

實際上,管道也是窗口中的句柄,所以我需要將管道句柄發送到其他進程。 –

+0

@AshishNegi不,你不發送句柄,你創建一個命名管道,併發送該管道的*名稱*到另一個進程。然後另一個進程使用該名稱創建管道的末端,並獲得其自己的唯一句柄。 –

0

嘗試增強進程間,可以創建共享內存