c - 如何在管道上放置指针?

标签 c linux pipe unix

假设我有一个指向线程中某个结构的指针,我想通过管道将它传递给父进程。


示例:

MyType * someType; 

然后我想将 someType 转换为 void * 并将其放在管道上。怎么做到的?

最佳答案

虽然您可以通过物理方式将指针传递给父进程,但该值对该进程没有意义,最好的情况是立即崩溃。指针指示对象在内存中的地址。这个地址只会在子进程的上下文中有效,并且会指向父进程中的一个完全不同的对象。

您需要执行以下操作之一才能启用此方案

  • 以一些序列化的形式通过管道传递整个对象
  • 在进程之间传递一个与共享内存基相关的指针,并在父进程中进行适当的修正。

编辑

请注意,我的回答是在询问有关如何在子进程和父进程之间传递指针的问题时写的。后来更新为线程。

关于c - 如何在管道上放置指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/971802/

相关文章:

c - Clang 编译器的 C 枚举的数据类型是什么?

linux - 使用 bash 从文本文件中删除行

c++ - 在 GPU 上使用 X11 时,XShmGetImage 是否会返回主机/设备内存?

linux - 从管道获取命令后进程退出

c++ - Windows C++ CMD窗口切换

将整个文本文件复制到二维数组中

c - 接收 UDP 广播,没有分配地址与 Linux/C/IPv4 接口(interface)

c - 案例标签中是否允许使用下划线?

python - 搜索文件中的匹配项,如果不存在则转到下一个文件

cocoa - 将 NSTask 与 NSPipe 和 Perl 脚本结合使用,生成另一个进程