Доступ к строке как дескриптор файла в C - PullRequest
2 голосов
/ 08 декабря 2010

Мне нужно написать модульные тесты на C для функции, которая работает с дескриптором файла. Я хотел бы включить содержимое тестовых файлов непосредственно в источник модульного теста. Таким образом, мой вопрос: возможно ли определить строку и обращаться к ней как к дескриптору файла в C?

Ответы [ 2 ]

6 голосов
/ 08 декабря 2010

В Linux см. fmemopen и open_memstream.

#define _GNU_SOURCE
#include <stdio.h>

FILE *fmemopen(void *buf, size_t size, const char *mode);

FILE *open_memstream(char ** ptr, size_t *sizeloc);
0 голосов
/ 08 декабря 2010

Если то, что вы тестируете, это только чтение (не поиск или запись, не выполнение fcntl и прочее) или только запись, то вполне возможно реализовать это с помощью канала и разветвления. Я никогда не делал этого в Windows, но я полагаю, что это возможно, так как pipe и fork являются POSIX.

Вам нужно сначала создать канал, затем форк и начать писать свой текст в канал от дочернего элемента (или от родительского элемента, и запустить тест на дочернем элементе, хотя я предпочитаю использовать дочерний элемент для написания), и read-fd канала, который вы передаете тестируемому коду. Дочерний должен продолжать писать до тех пор, пока не завершится (что может потребовать многократных вызовов для записи) или канал не будет закрыт. Если тестируемый код пишет, дочерний элемент должен читать до тех пор, пока канал не будет закрыт (возможно, придется вызывать read более одного раза), так как в противном случае тестируемый код заблокирует ожидание того, чтобы кто-то прочитал, или умрет на сломанном канале.

НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...