我写了一个在Linux上运行的functino在处理数据时在linux上生成一些文件。 我在rtems(一个实时操作系统)中调用了该函数,并且编译好了,并且在很大程度上似乎运行正常。但我发现它无法在speicified目录中创建结果文件(这是一个选项)。 (我使用SD卡作为文件系统)。我有一个我在一年前写的测试程序,我在SD卡上测试文件读取,写入和复制,一切都很好。但是在我通过修改SD卡测试程序并添加更多内容(与深度学习相关)所做的这个新应用程序中,程序无法创建文件。在代码中,它检查一个名为' result'的目录。存在,如果不存在,则生成目录并生成循环索引的文件。我希望有人能找到问题所在。对于linux和rtems,标题都可以。 (rtems具有相同的标题) 文件系统被监视好,mkdir返回0.我尝试从rtems(从运行良好的测试程序)添加一些标题,但它没有工作。可能是什么问题呢?任何帮助或建议表示赞赏。
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <sys/stat.h>
lrn_layer(,...)
{
...
if (save_output) {
if (stat("result", &st) == -1) {
printf("making directory 'result'..\n");
#ifdef _RTEMS_
rtems_status_code status = mkdir("result", 0777);
printf("mkdir status = %d\n", status);
#else
mkdir("result", 0777);
#endif
}
else {
printf("directory 'result' exists..\n");
}
sprintf(str, "./result/L%02d_ReLU_T000_FN%03d.txt", layer, ofm_idx);
file = fopen(str, "w");
printf("writing relu result to file %s ..\n", str);
for (rix = 0; rix < H; rix++) {
fprintf(file, "### kr = %d ##\n", rix);
for (cix = 0; cix < W; cix++) {
fprintf(file, "%f ",*(top+ofm_idx*H*W+rix*W+cix));
if (cix %8 == 7) fprintf(file, "\n");
}
}
fclose(file);
}
...
}
以下是处理结果的一部分:
---- Layer 1 : ReLU ----
reading inputs from files..
doing ReLu..
making OFM 0 / 96
making directory 'result'..
mkdir status = 0
writing relu result to file ./result/L01_ReLU_T000_FN000.txt ..
making OFM 1 / 96
stat = 0
directory 'result' exists..
writing relu result to file ./result/L01_ReLU_T000_FN001.txt ..
making OFM 2 / 96
stat = 0
directory 'result' exists..
writing relu result to file ./result/L01_ReLU_T000_FN002.txt ..