ФАЙЛ полностью в памяти *

Я пишу некоторый код, чтобы выполнить интеграционный тест некоторого кода C, который читает сокет TCP. Код написан таким образом, что я могу легко передать его любому FILE * поэтому мои первые мысли при тестировании кода заключались в том, чтобы вместо этого использовать сокеты UNIX, чтобы полностью имитировать сетевые взаимодействия внутри процесса тестирования. Единственное, что мне мешает, так это то, что сокетам UNIX нужен путь к файлу для создания сокета, а это значит, что мне нужно разобраться со сложностями поиска / создания / уничтожения уникального временного каталога и обеспечения того, чтобы каждый отдельный тест получал уникальное имя сокета в этом каталог. Трубы обладают тем свойством, что все находится в памяти, поэтому их легко устанавливать / разрушать. Но трубы являются однонаправленными и не могут соответствовать FILE * интерфейс мне нужен.

1 ответ

Решение

Квотирование Nominal Animal, если они отправят свой комментарий в качестве ответа, я удалю это и приму их.

Вы можете создать подключенную пару сокетов, используя socketpair(), Например, int sockfd[2], err = socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd); создает подключенную пару сокетов потоков домена Unix, если err == 0 (увидеть strerror(err) по причине отказа в противном случае). Один конец sockfd[0] а другой sockfd[1]

Другие вопросы по тегам