ФАЙЛ полностью в памяти *
Я пишу некоторый код, чтобы выполнить интеграционный тест некоторого кода 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]