Armadilloフォーラム

Cアプリからの再起動方法は?

ishikawa

2014年6月25日 18時00分

ミタニです。

いつもお世話になっております。

現在、Cで液晶へGUI表示するアプリを作成してArmadillo-440で動作させています。

このアプリから、GUIでメニュー選択すると再起動させたいのですが、どのようにすれば可能でしょうか?

できれば、電源オフ→オンと同様のBootLoaderからの再起動を希望します。

以上、よろしくお願いいたします。

コメント

中村です。

> できれば、電源オフ→オンと同様のBootLoaderからの再起動を希望します。

誰かが書くのでは・・・、と様子見だったのですが、ないようなので。

ハード的にリセットをかけるのではなく、
ソフトウェアによる再起動でいいのですよね?

他のプロセスを殺したりsyncしたりする必要があるなら、
rebootコマンドをsystem()で呼び出すのがいいと思います。
system("reboot");

Armadillo-4x0のrebootコマンドが何をやっているかは、
busyboxの次のソースを見ればわかります。
atmark-dist/user/busybox/busybox-1.00.rc3/init/reboot.c
atmark-dist/user/busybox/busybox-1.00.rc3/init/init_shared.c

いきなり再起動していいなら、reboot()関数を次のように呼び出します。
(上に書いたrebootコマンドは最後にこれをコールして再起動してます)
reboot(LINUX_REBOOT_CMD_RESTART);

ブートローダー(Hermit-At)からの再起動になります。

--
なかむら

ミタニです。

初歩的な質問にお答えいただき、ありがとうございました。

無事、再起動できました。

> 中村です。
>
> > できれば、電源オフ→オンと同様のBootLoaderからの再起動を希望します。
>
> 誰かが書くのでは・・・、と様子見だったのですが、ないようなので。
>
> ハード的にリセットをかけるのではなく、
> ソフトウェアによる再起動でいいのですよね?
>
> 他のプロセスを殺したりsyncしたりする必要があるなら、
> rebootコマンドをsystem()で呼び出すのがいいと思います。
> system("reboot");
>
> Armadillo-4x0のrebootコマンドが何をやっているかは、
> busyboxの次のソースを見ればわかります。
> atmark-dist/user/busybox/busybox-1.00.rc3/init/reboot.c
> atmark-dist/user/busybox/busybox-1.00.rc3/init/init_shared.c
>
> いきなり再起動していいなら、reboot()関数を次のように呼び出します。
> (上に書いたrebootコマンドは最後にこれをコールして再起動してます)
> reboot(LINUX_REBOOT_CMD_RESTART);
>
> ブートローダー(Hermit-At)からの再起動になります。
>
> --
> なかむら
>