Javaで外部スレッドを起動する時はProcessの標準入力、標準出力とエラー出力のstreamをclose()してあげないと「Too many open files」というIOExceptionが出てしまう。 また、標準出力やエラー出力が多くてstreamのバッファ容量を超えるとProcessがデッドロックしてしまうため出力が多い場合は別スレッドにして読み込んでやる必要がある。 今回Runtime.exec()で動かしているプログラムはArmadillo-9のGPIO出力プログラム。 ArmadilloのソフトウェアマニュアルについているサンプルをもとにCで作成した。 とっても簡単なもので引数で渡された値を特定ポートに出力するだけ。 標準出力にはポートの出力の値をprintfで出しているだけ。 こんだけ少ない値なら読み込まなくてもいいかと思ってただclose()するだけにした。 /**