在C中将字符串作为文件句柄访问

时间:2010-12-08 15:41:53

标签: c unit-testing

我需要在C中编写单元测试,以便对文件句柄进行操作。我想将测试文件的内容直接包含在单元测试源中。因此我的问题是:是否可以定义一个字符串并将其作为文件句柄在C?

中访问

2 个答案:

答案 0 :(得分:6)

在Linux上,请参阅fmemopenopen_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);

答案 1 :(得分:0)

如果您正在测试的只是阅读(不是寻找或写作,或做fcntl和东西)或只是写作,那么很有可能通过使用管道和分叉来实现这一点。我从来没有在Windows中做过这个,但我想它应该是可能的,因为管道和分支都是POSIX。

你需要首先创建一个管道然后分叉,然后开始将你的文本写入来自孩子(或者父母的管道),然后在孩子中运行测试,我更喜欢孩子写作了,以及传递给测试代码的管道的read-fd。孩子应该继续写作直到它完成(这可能需要多次调用写入)或管道关闭。如果您正在测试的代码正在写入,那么孩子应该读取直到管道关闭(可能不得不多次调用读取),否则测试的代码将阻止等待某人阅读,或者在管道损坏时死亡。

HTH。