从测试中的何处创建临时文件

Where to create a temporary file from within a test

我有一个测试,在标准cmake/ctest过程中是运行。

问题是我的测试需要创建一个临时文件(不需要在不同的测试中保留它),并且失败并显示 EACCES 错误代码。

以下(大概)失败了:

m_hFile = open("/tmp/mytest.bin", O_RDWR | O_CREAT);

我是否需要调整与权限相关的内容,或者写入其他位置?

您可以使用 ISO C 函数 tmpfile 创建一个具有自动生成文件名的临时文件。文件以 "wb+" 模式打开。

实现应该select一个单独的目录,可以在其中创建临时文件;在 POSIX 文档中,它指定只有在已经有太多打开的文件句柄或磁盘已满 space 时才会失败。 (即不可能出现权限错误)。

您还可以使用 tmpnam 函数生成唯一的文件名(这不是线程安全的),然后您可以尝试为其创建文件。

谢谢大家,找到问题了

事实证明,如果文件不存在并且应该创建 - 看来我必须指定 mode,并使用 open 的 3 参数版本。

m_hFile = open("/tmp/mytest.bin", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP);