c - 从测试中创建临时文件的位置



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

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

以下(大概(失败:

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

我是否必须调整与权限相关的内容,或者可能写入另一个位置?

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

实现应该单独选择一个可以创建临时文件的目录;在 POSIX 文档中,它指定只有在打开的文件句柄太多或磁盘空间不足的情况下,此操作才会失败。(即权限错误是不可能的(。

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

谢谢大家,我发现了问题。

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

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