Я хочу отправить дескриптор трубы другим процессам. Чтобы отправить указатель, я преобразовал его в строку.
sprintf(handleToChar, "%p", handle);
поэтому, если значение handle составляет 0x00043c
я получаю память с "00043c"
. Я отправил это.
Я получаю его в правильной форме "00043c"
.
Я не могу его вернуть. Я снова попытался использовать sprintf, но это неправильно, как я понял позже.
sprintf((char*)handle, "%s", handleToChar); // <-- wrong
Я думал, что atoi
будет делать, но в строке могут быть и символы. так что он снова не удался.
Как мне это сделать?
Вы просто не можете. Адреса не могут быть разделены между процессами.
Если вы хотите разделить ресурс между двумя процессами, вам необходимо создать общий ресурс или сохранить/отправить другие данные, чтобы другой процесс мог создать свой собственный дескриптор.
Попробуйте увеличить промежуточный процесс, вы можете создать общую память