假设我有一个指向线程中某个结构的指针,我想通过管道将它传递给父进程。
示例:
MyType * someType;
然后我想将 someType
转换为 void *
并将其放在管道上。怎么做到的?
最佳答案
虽然您可以通过物理方式将指针传递给父进程,但该值对该进程没有意义,最好的情况是立即崩溃。指针指示对象在内存中的地址。这个地址只会在子进程的上下文中有效,并且会指向父进程中的一个完全不同的对象。
您需要执行以下操作之一才能启用此方案
- 以一些序列化的形式通过管道传递整个对象
- 在进程之间传递一个与共享内存基相关的指针,并在父进程中进行适当的修正。
编辑
请注意,我的回答是在询问有关如何在子进程和父进程之间传递指针的问题时写的。后来更新为线程。
关于c - 如何在管道上放置指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/971802/