完全内存文件*

时间:2017-06-29 02:00:07

标签: c sockets pipe unix-socket

我正在编写一些代码来执行一些读取TCP套接字的C代码的集成测试。代码是以这样的方式编写的,我可以轻松地将它传递给任何FILE *,所以我对测试代码的初步想法是使用UNIX套接字来代替在测试过程中完全伪造网络交互。我唯一挂断的是UNIX套接字需要一个文件路径来创建套接字,这意味着我需要处理查找/创建/销毁一个唯一临时目录的复杂性,并确保每个单独的测试都获得一个唯一的套接字名称目录。管道具有一切都在内存中的属性,因此它们易于设置/拆除。但是管道只是单向的,它们不能符合我需要的FILE *接口。

1 个答案:

答案 0 :(得分:0)

引用Nominal Animal,如果他们提交评论作为答案,我会删除并接受他们的评论。

  

您可以使用socketpair()创建一对连接的套接字。例如,如果Query q = em.createQuery("select distinct c from Cases c where " + "c.name like :name and " + "c.title like :title"); int sockfd[2], err = socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd);创建一对连接的Unix域流套接字(否则请参见err == 0)。一端是strerror(err),另一端是sockfd[0]