0

我写了一个在linux上运行的functino,在处理数据时会在linux上生成一些文件。我在 rtems(一个实时操作系统)中调用了该函数,它编译正常,并且在很大程度上似乎运行良好。但我发现它无法在指定目录中创建结果文件(这是一个选项)。(我将 SD 卡用于文件系统)。我有一个一年前编写的测试程序,我在其中测试文件在 SD 卡上的读取、写入和复制,一切正常。但是在我通过修改 SD 卡测试程序并添加更多东西(与深度学习相关)而制作的这个新应用程序中,该程序无法生成文件。在代码中,它检查是否存在名为“result”的目录,如果不存在,则创建该目录并生成通过 index.html 循环的文件。我希望有人能找出问题所在。标头对于 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 ..
4

0 回答 0