質問: SDK(NuttX)の関数内でアプリを呼ぶ方法はありますでしょうか? 例えば、 1.sdk/apps/examples/helloをコピーして、hello2を作成 2.hello2_main.cにて、 ``` int main(int argc, FAR char *argv[]) { printf("Hello2, World!!\n"); /* ここで、「nsh> hello」と同じような事を実行したい */ return 0; } ```
回答: いくつか方法があって、 (1) アプリケーションの関数を直接呼び出す ``` #include #include // helloアプリケーション関数のプロトタイプ宣言 int hello_main(int argc, FAR char *argv]); int main(int argc, FAR char *argv[]) { printf("Hello2, World!!\n"); hello_main(0, NULL); // 関数呼び出し return 0; } ``` (2) もしくは、SDKコンフィグレーションで、 systemコマンドを有効にすれば(CONFIG_SYSTEM_SYSTEM=y)、 system()関数を使って"hello"コマンドを呼び出すこともできます。 ![画像の説明をここに入力 ``` #include #include #include int main(int argc, FAR char *argv[]) { printf("Hello2, World!!\n"); system("hello"); // system関数 return 0; } ```