C++ UNIX中的进程间通信

C++ UNIX中的进程间通信,c++,c,unix,C++,C,Unix,是否可以分叉一个进程并让父进程告诉分叉的进程调用一个函数并将其结果返回给父进程?如果是这样,我们如何才能做到这一点?我不确定执行进程间通信的最佳方式是否是通过管道或套接字(或其他结构)。我只对在基于Unix的系统上执行IPC和用C/C++编程感兴趣。如果您有父子关系,我认为未命名管道(也称为“管道”)更好。否则,您可以使用本地套接字或FIFO(也称为“命名管道”) 您可以让父对象向子对象发送一个整数。子进程根据接收到的整数运行某个函数并将结果发送回父进程。为什么不使用线程而不是新进程?轻量级且易

是否可以分叉一个进程并让父进程告诉分叉的进程调用一个函数并将其结果返回给父进程?如果是这样,我们如何才能做到这一点?我不确定执行进程间通信的最佳方式是否是通过管道或套接字(或其他结构)。我只对在基于Unix的系统上执行IPC和用C/C++编程感兴趣。

如果您有父子关系,我认为未命名管道(也称为“管道”)更好。否则,您可以使用本地套接字或FIFO(也称为“命名管道”)


您可以让父对象向子对象发送一个整数。子进程根据接收到的整数运行某个函数并将结果发送回父进程。

为什么不使用线程而不是新进程?轻量级且易于与父线程通信。我正在分离进程以实现父线程和子线程之间的权限分离。两个线程不是以相同的权限运行吗?是的,一个进程中的所有线程都是该进程的一部分,操作系统权限基于进程。因此,您不能对同一进程的不同线程拥有不同的权限。对。我应该提到,为了特权分离,我有兴趣这样做。子进程将代表父进程执行特权操作。因此,我不希望父进程能够透明地访问子进程所做的任何事情。具体来说,您希望子进程调用的函数的签名和语义是什么?父进程必须序列化函数调用的结果,对吗?我从来没有在C/C++中这样做过,但我在Java中这样做过。没有序列化。只需让父节点发送一个整数值(例如,2)。在子级上,使用if-else:if(value_-received==2)f1(…);如果(接收到的值=3)f2(…);等等。对不起,我的意思是说“子进程必须序列化…”如果子进程正在调用函数,并且需要将结果返回到父进程,那么子进程在没有序列化的情况下如何将结果发送到父进程?父级如何在没有反序列化的情况下接收结果?序列化是如何实现的?如果您的意思是父级和子级必须提前知道需要为请求和应答传递哪些结构,那么是的,它们必须“序列化”。是的,这就是我的意思。如何对函数的参数执行序列化?我如何对结果进行反序列化?