Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “a”是什么;“握手”;通常针对命名管道实现_C++_Linux_Signals_Named Pipes - Fatal编程技术网

C++ “a”是什么;“握手”;通常针对命名管道实现

C++ “a”是什么;“握手”;通常针对命名管道实现,c++,linux,signals,named-pipes,C++,Linux,Signals,Named Pipes,我需要在一个小型Linux程序中实现一个握手类型的协议,该程序使用命名管道与其他进程通信。我在使用命名管道时搜索了握手类型协议的一般实现模式,但没有找到任何结果 我简直不敢相信没有这样的模式。有人能告诉我一个可能的资源吗 在充分披露中,这是为了家庭作业,但实现这种模式不是家庭作业。我们需要在家庭作业代码中解决一个问题,我相信这是一个可能的解决方案。作业是用C++实现的,但是语言对我来说并不重要。我只是不想重新发明轮子 更新:我有一种感觉,这可能是通过信号实现的 我所说的握手是指子进程向它的父进程

我需要在一个小型Linux程序中实现一个握手类型的协议,该程序使用命名管道与其他进程通信。我在使用命名管道时搜索了握手类型协议的一般实现模式,但没有找到任何结果

我简直不敢相信没有这样的模式。有人能告诉我一个可能的资源吗

在充分披露中,这是为了家庭作业,但实现这种模式不是家庭作业。我们需要在家庭作业代码中解决一个问题,我相信这是一个可能的解决方案。作业是用C++实现的,但是语言对我来说并不重要。我只是不想重新发明轮子

更新:我有一种感觉,这可能是通过信号实现的

我所说的握手是指子进程向它的父进程报告它已准备好工作,但在父进程发出“开始”信号之前不继续进行(即使管道中有东西)。在我的工作理论中,我将有许多子进程需要报告就绪并等待来自父进程的go信号。

在典型用法中,这些进程依赖于阻塞来握手。writer进程打开管道以进行写入,reader进程打开管道以进行读取,并且无论发生哪种情况,都会阻塞,直到另一个进程打开其一侧。这可以扩展到在读卡器端使用非阻塞IO


命名管道对于一对一IPC最有用。在一对多的情况下,您可能应该改用UNIX域套接字。

此作业与命名管道有关。。。。所以我坚持使用给定的体系结构……嗯,每个子进程需要一个管道(如果需要双向通信,需要两个管道)。有鉴于此,您只需让父进程一次打开所有管道,一旦所有open()调用都返回,它就知道所有子进程都在运行并等待工作。这本书《Unix环境中的高级编程》是一本了不起的书,它深入地介绍了周围的问题。用银子(如果不是金子的话)来衡量它是值得的。顺便说一句,我现在明白了为什么我在这个话题上找不到任何东西。对于这些技术来说,这是一个非常不寻常的用途。。。。