>我有一个测试,它在标准的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);