在C语言中,您可以使用fork()创建多进程应用程序,然后可以使用先进先出管道进行通信。我了解到C++只支持多线程应用程序,如果你想要一个多进程的应用程序,你必须依靠fork()。
但是在C++中,类型检查是至关重要的,所以我不能只通过管道传输对象而没有任何风险。您可以强制转换为void*,并要求sizeof和通过管道发送所有内容,以便将其类型转换回原始对象。
那么为什么这感觉如此不对劲呢?在C++中是否没有使用多进程架构,或者是否有库或更好的处理方法。我用谷歌搜索了一下,你能找到的唯一的东西是多线程C++或多进程C。
想要更多进程的原因是我希望我的应用程序尽可能健壮。如果我的web服务崩溃,我希望我的主进程重新启动它。多线程没有办法做到这一点,因为你永远不会知道一个线程是否损坏了另一个线程的内存,所以如果你在一个线程中遇到错误,你必须出于安全考虑重新启动。
发布于 2013-03-12 01:46:05
我假设你所说的多进程程序是指同时运行两个独立的程序实例,并在它们之间共享一些数据。进程之间的通信可能很棘手。我一直使用你描述的管道类型转换方法,或者通过使用本地套接字系统来回发送数据,但是确实存在用于进程之间更高级别通信的库,请参阅boost.interprocess我会看一看,看看它是否能满足您的需要。
https://stackoverflow.com/questions/15344431
复制相似问题