完全在内存中的文件 *

Completely in-memory FILE *

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

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

You can create a connected pair of sockets using socketpair(). For example, int sockfd[2], err = socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd); creates a connected pair of Unix domain stream sockets if err == 0 (see strerror(err) for reason of failure otherwise). One end is sockfd[0], and the other is sockfd[1]