86861


SDKイニシャル時に、shコマンドを使って、スクリプトファイルを実行しております。

[code]

    sh script1 &
    sh script2 &
    sh script3 &
    sh script4 &
    sh script5 &
    sh script6 &
    
[/code]

script5と、script6で、以下のエラーが表示され、実行できておりませんでした。

[code]

    nsh: sh: fopen failed: 23
    
[/code]

script1～4までは、エラーなく実行できております。

どこかに上限数の設定がありますでしょうか？  
（SDKコンフィグ設定でNSH Libraryあたりを探してみましたが見つかりませんでした。。。）


CC BY-SA 4.0
2022-03-14T07:50:54.897
86828
2022-03-16T13:58:47.400
2022-03-14T07:58:08.290
47303
47303
question
spresense
SDKイニシャル時のshコマンドでエラー


実際に試してみましたが、自分の環境では特に問題なく6つ以上のスクリプトでも実行できています。質問のエラーは、スクリプトの中身に依存していることはないでしょうか。

[code]

    nsh: sh: fopen failed: 23
    
[/code]

23は、ENFILEエラーなのでファイルのopen数が上限に達しているようです。

[code]

    #define ENFILE              23
    #define ENFILE_STR          "File table overflow"
    
[/code]

もしかしたら使用しているSpresense SDKのバージョンが古かったりしませんか？  
昔のバージョンは1つのスレッド/タスクからのファイルopen数に制限がありましたが、最新のバージョン(SDKv2.3.0以降のバージョン)だとその制約はなくなっているはず。もし古いバージョンを使用している場合は、最新のバージョンに更新して試してみることをオススメします。


CC BY-SA 4.0
2022-03-16T13:58:47.400
86861
2022-03-16T13:58:47.400
31378
86828
answer