如何将指针放在管道上?

2 c unix linux pipe

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


例:

MyType * someType; 
Run Code Online (Sandbox Code Playgroud)

那么我想投someTypevoid *并把它放在管道.怎么做到呢?

Jar*_*Par 13

虽然您可以物理地将指针传递给父进程,但该值对于进程来说将毫无意义,并且您的最佳情况将是立即崩溃.指针指示内存中对象的地址.此地址仅在子进程的上下文中有效,并且将指向父进程中完全不同的对象.

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

  • 在整个管道中传递整个对象
  • 在进程之间传递相对于共享内存库的指针,并在父进程中执行适当的修正.

编辑

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

  • 将指针传递给共享内存将不起作用,因为共享内存段不一定映射到两个进程中的相同基址. (2认同)