От символа * к ручке

0

Я хочу отправить дескриптор трубы другим процессам. Чтобы отправить указатель, я преобразовал его в строку.

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

поэтому, если значение handle составляет 0x00043c я получаю память с "00043c". Я отправил это.

Я получаю его в правильной форме "00043c".

Я не могу его вернуть. Я снова попытался использовать sprintf, но это неправильно, как я понял позже.

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

Я думал, что atoi будет делать, но в строке могут быть и символы. так что он снова не удался.

Как мне это сделать?

Теги:
pointers
handle
inter-process-communicat

2 ответа

2
Лучший ответ

Вы просто не можете. Адреса не могут быть разделены между процессами.

Если вы хотите разделить ресурс между двумя процессами, вам необходимо создать общий ресурс или сохранить/отправить другие данные, чтобы другой процесс мог создать свой собственный дескриптор.

  • 0
    на самом деле каналы также являются дескрипторами в окнах, поэтому мне нужно отправить дескриптор канала другому процессу.
  • 0
    @AshishNegi Нет, вы не отправляете дескриптор, вы создаете именованный канал и отправляете имя этого канала другому процессу. Затем другой процесс создает свой конец канала, используя это имя, и получает свой собственный уникальный дескриптор.
0

Попробуйте увеличить промежуточный процесс, вы можете создать общую память

Ещё вопросы

Сообщество Overcoder
Наверх
Меню