bash スクリプトを実行するプログラムを作成しようとしています。bash スクリプトで C++ プログラムの状態を変更できるようにしたいのですが、見つけた唯一の方法は環境変数を使用することでした。つまり、 getenv はプログラムが実行された時点でのみ値を取得するようです。
バッシュ
export BLINK=1
./blink &
sleep 5s
unset BLINK
C++
int main(int args, char **argv) {
char *blink = getenv("BLINK");
while(blink && blink[0] == '1')
{
std::cout << getenv("BLINK") << std::endl;
usleep(500000);
}
return 1;
}
つまり、blink プログラムを実行し、5 秒待ってから環境の設定を解除します。ただし、C++ プログラムは常に環境値を 1 と見なし、停止することはありません。プログラムの実行中に更新された環境変数を取得するにはどうすればよいですか? または、bash スクリプトで C++ プログラムの状態を制御するより良い方法はありますか。
EDIT終了時にハードウェアをオフにする必要があるため、プロセスを単に強制終了したくないことに注意してください。