0

Linux で実行する関数を作成し、データの処理中に Linux でいくつかのファイルを生成しました。その関数を rtems (リアルタイム OS) で呼び出したところ、正常にコンパイルされ、ほとんど問題なく動作しているようです。しかし、指定したディレクトリに結果ファイル (オプション) を作成できないことがわかりました。(ファイルシステムにはSDカードを使用しています)。私は1年前に書いたテストプログラムを持っていて、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 ..
4

0 に答える 0