/var/run/ に "アプリケーション名.pid" というファイル名を作成する。そのファイルにはデーモンのプロセスIDを記述。
デーモンを終了させるときは
kill `cat /var/run/"アプリケーション名.pid"`
を行い、ファイルも削除する。ファイルが既に存在する場合にはデーモンは立ち上がらない。
あー!もしかしてこれっていちばん原始的なプロセス管理手法?
UNIXが出来た当初からデーモンがあることを考えると妙に納得する予測だな。ま、そこからいろいろな手法が生まれてきたわけだー。なるほどー。(一人納得)
socket, select/poll, ioctl, fork signalなどシステムコールを覚えてくるにつれて
「実はロボットのOSって Unix(Linux) にした方が効率良いロボットを造れるんじゃない?」
とか
「ioctl うてりゃ、Pythonやrubyなどのスクリプト言語でロボット動かせない?(デバイスドライバはCで書く必要があるけど、いやよくわからない)」
とか色々考えるわけです。
余裕が出てきたんで、少しロボットのアルゴリズムを考える。
まず、ロボットを2台準備。一台はフィールド全体を見渡すためのオペレーションロボット。もう一台はボールを運ぶためのロボット。オペレーションロボットはボールの位置、ボール運搬ロボットの位置情報を随時運搬ロボットに送信。運搬ロボットはその命令を受け取ってボールを落とす。二人の通信は Bluetooth で行う。Unix なら socket write read でいけんだろー。あはは。
と、色々考えはある。だけど、ハードを作る知識がなくて前進できない状態。それに、Uinux 入れるとなるとそれなりに高い CPU を使わなければいけないし…。うーん、誰か造りません?
(ロボ)…計画中です。つーか、うちのボードで可能です。買ってください(笑)<br><br>ちょっと書いておくと、ioctl打てなくてもスクリプトでロボは動いて、Linuxだと適当なキャラクタ型デバイスを作っておけば、あとはread、write(もちろんioctlでもよい)で動きます。<br>問題なのは周期実行で、割り込みをスクリプトではどうやったら拾えるのか、という点ですね。Cでプログラムを書いておいて、その中から特定のスクリプトを呼び出せばいいんでしょうけど、それだとスクリプトの意味が…(なんて書いてたら、スクリプトから割り込みを拾う方法がありそうな気がしてきた)
高いよ、凄く高いよ(笑<br><br>python といい、 perl といい ioctl が入っているから、ついでに割り込み機能も付いてないものかなぁ。
高くない、高くない(笑)これでも相当安い方なんですよ。<br>perlで割り込み処理って、出来たら怖いな。10msecごとの割り込みだと、10msec以内に終わる気がしない…。