C言語のプログラムからshellを実行する
例えばシステムのシャットダウンするときは
sudo shutdown -h now
とかすると思うんだけど、これをC言語のプログラムから実行したい場合は↓みたいにするといい。
まずshellのファイルを作る。(ファイル名はsys_down.shとしてみる)
#!/bin/sh
sudo shutdown -h now
exit 0
次に上で作ったshellをコールするためのC言語のプログラムを準備する。
#include <stdlib.h> int main(void)
{ system("bash sys_down.sh"); return 0; }
これだけでO.K.
んで、無限ループでポーリングするようなプログラムを実行するような内容
のshellとかだとブロックされてしまうこともあるかと思うので、その時は
system(“bash sys_down.sh”);
と書かずに、最後に&を付けて
system(“bash sys_down.sh &”);
としてやるとブロックされずにバックグランドでshellが実行される。
RaspberryPiで
で使ったWebIOPiでC言語のプログラムを実行したい
と思ったので、こんなことやってみた。
結果はちゃんと動いてくれたので満足だけど、無限ループさせるようなプログラムだと
不要になったときにプロセスをkillするのを忘れんように。。。
ちなみに
はそれなりに参考になると思う。