タイムアウトしなくなった
今まで、思考エンジンのゲーム木が大きくなって考える時間が多くなりすぎたら、ブラウザだか、サーバーだか、rubyだかが勝手にタイムアウトとして、切ってたんだ。
しかし、先ほどのゲーム中タイムアウトしてくれなくなった。
仕方がないので、rubyで外部コマンドのタイムアウト処理をしようと思う。
んで、以下コード。
child.rb
#!/usr/bin/ruby #なかなか終わらない外部プログラム sleep(1000000) print "child ENDh\n"
parent.rb
#!/usr/bin/ruby IO.popen("ruby parent.rb"){ | io | ioA = select([io], [], [], 1) #第四引数はタイムアウト処理するまでの秒数 #タイムアウトしたときはioA=nil, そうでないときはIOオブジェクトの二次元配列 if ioA print ioA[0][0].read else print "timeout \n" exit end } print "parent END\n"
実はこれだと、exitが行われても、プロンプトが返ってこない。どうやら、子プロセスが終わってないからみたい。なんだろうゾンビプロセスとは言えない中途半端な子プロセスは。
さてどうしよう・・・