我需要在C中编写单元测试,以获得对文件句柄进行操作的函数。我想将测试文件的内容直接包含到单元测试源中。因此我的问题是:是否可以定义一个字符串并将其作为C中的文件句柄进行访问?访问字符串作为文件句柄在C
2
A
回答
6
在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
如果你正在测试的只是阅读(而不是寻求或写作,或做fcntl和东西)或只写,那么很可能通过使用管道和分叉来实现这一点。我从来没有在Windows中这样做过,但我认为它应该是可能的,因为管道和叉子都是POSIX。
您需要首先创建一个管道,然后fork,然后开始将您的文本写入管道(从父节点到子节点,然后在子节点运行测试,但是我更喜欢写子节点) ,以及你传递给你的测试代码的管道的read-fd。孩子应该继续写作直到完成(可能需要多次写入)或管道关闭。如果你的代码正在写入,那么孩子应该阅读,直到管道关闭(可能不得不打电话读取多次),否则被测试的代码将阻止等待某人阅读,或死在一根破损的管道上。
HTH。
相关问题
- 1. 有没有办法在php中作为文件句柄来访问字符串?
- 2. C中的字符串句柄#
- 3. 绘制2 .dat文件,字符串文件句柄错误
- 4. C++/CLI:为字符串句柄预分配内存
- 5. 在RC文件访问字符串
- 6. 字符串作为文件名C#
- 7. 获取文件句柄作为参数
- 8. MATLAB GUI访问句柄
- 9. Eclipse从字符串创建CompilationUnit句柄
- 10. 主干句柄字符串数组
- 11. GetFileInformationByHandle()为stdio文件句柄
- 12. Perl文件上传。如何多次访问文件句柄?
- 13. 在C中枚举文件句柄#
- 14. 如何在Perl类中存储和访问文件句柄?
- 15. 为什么通过string.h工作访问C++字符串类?
- 16. 创建GNU C文件描述符没有文件句柄
- 17. 文件描述符和文件句柄(和C)
- 18. C++字符串输入作为if/else语句条件
- 19. C++/CLI句柄运算符
- 20. C++结合文件路径作为字符串与文件名
- 21. C#字符串文件路径问题
- 22. EXC_BAD_ACESS在访问字符串
- 23. 字符串访问
- 24. 字符串访问
- 25. c字符串和文件操作
- 26. C#字符串操作。获取文件名子字符串
- 27. 如何关闭文件句柄Application.run后访问
- 28. C#拼写无效的文件句柄
- 29. 动态C字符串访问
- 30. 访问冲突覆盖C字符串
查看Ryan的回答和我的评论。这些是POSIX的正确方法,并且可以在C1x中进行标准化。如果您需要支持非POSIX系统,那么您几乎不会运气。 – 2010-12-08 16:06:38
POSIX会做得很好,非常感谢! – Leo 2010-12-08 16:08:59