需要具有非阻塞命名管道,能够在Linux上的c中进行双向通信
我想创建一个服务器和一个客户端(两个独立的程序),在服务器中创建 两个命名管道(我想这是双向流量的最低要求),然后 客户端启动,客户端和服务器应该能够双向发送和接收数据 所有的时间(全双工类型)。我想这将需要我有非阻塞命名管道。希望得到一些帮助,因为我已经能够创建半双工类型的通信 但要在客户机和服务器之间实现连续无缝的数据传输却很困难 谢谢可能的选项:需要具有非阻塞命名管道,能够在Linux上的c中进行双向通信,c,linux,C,Linux,我想创建一个服务器和一个客户端(两个独立的程序),在服务器中创建 两个命名管道(我想这是双向流量的最低要求),然后 客户端启动,客户端和服务器应该能够双向发送和接收数据 所有的时间(全双工类型)。我想这将需要我有非阻塞命名管道。希望得到一些帮助,因为我已经能够创建半双工类型的通信 但要在客户机和服务器之间实现连续无缝的数据传输却很困难 谢谢可能的选项: 本地域套接字:具有SOCK_流、SOCK_DGRAM、SOCK_seq数据包类型的AF_本地族。套接字可以是“内存中”,这意味着您可以使用唯一的
查看管道上的部分和Unix套接字上的部分。您是否考虑过使用
select()
要处理命名管道的读取?您想通过网络进行进程间通信或客户端-服务器通信吗?进程间通信不是网络通信。同意-AF\u UNIX
/AF\u LOCAL
套接字才是您真正想要的。您好,我知道我应该使用插座,但要求是管道。我使用两个命名管道(一个用于读取,一个用于写入)编写了代码,并且能够实现双向数据流。逻辑是这样的,我用O_NONBLOCK标志打开一个命名管道进行读取,启动一个无限循环尝试读取内容,如果它返回的字节数超过0,我打开另一个管道进行写入(用O_NONBLOCK标志),将接收到的内容写入该管道并关闭它。这是我正在解释的服务器代码。它可以工作,但当它启动时,几乎占用了我所有的cpu。我如何降低cpu使用率。请帮助。您的CPU使用率来自无限循环。除非你有其他工作要做,否则在阅读管道时只需阻塞即可。您可能需要考虑一个事件循环,它可以管理读取管道的空闲轮询,并允许您同时进行其他工作。