Mercurial > epgrec.yaz
changeset 166:68f6b36e7c01
mod: ?????????
| author | Sushi-k <epgrec@park.mda.or.jp> |
|---|---|
| date | Fri, 16 Apr 2010 17:31:18 +0900 |
| parents | 254d8a21bf36 |
| children | b307e3749e80 |
| files | recorder.php |
| diffstat | 1 files changed, 32 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/recorder.php Tue Apr 06 11:03:45 2010 +0900 +++ b/recorder.php Fri Apr 16 17:31:18 2010 +0900 @@ -8,6 +8,8 @@ include_once( INSTALL_PATH . "/recLog.inc.php" ); include_once( INSTALL_PATH . "/reclib.php" ); +define("DEBUG", true ); + // 後方互換性 if( ! defined( RECORDER_CMD ) ) { @@ -19,6 +21,7 @@ $msgh_r = null; // 受信用メッセージハンドラ $msgh_w = null; // 送信用メッセージハンドラ +$logfile = INSTALL_PATH."/settings/recorder_".$reserve_id.".log"; // ノンブロッキングメッセージ受信 @@ -68,7 +71,7 @@ 2 => array( 'file','/dev/null','w' ), ); - $ps = proc_open( "/bin/ps -o pid,ppid -ax" , $d, $pipes ); + $ps = proc_open( "/bin/ps -o pid,ppid ax" , $d, $pipes ); do { $st = proc_get_status( $ps ); }while( $st['running'] ); @@ -92,24 +95,48 @@ function epgrec_termproc( $p ) { + if( DEBUG ) { + global $logfile; + system( "ps ax >>".$logfile ); + system( "echo ------- >>".$logfile ); + } + $cpids = epgrec_childproc( $p ); + if( DEBUG ) { + global $logfile; + + foreach( $cpids as $cpid ) { + system( "echo ".$cpid." >>".$logfile ); + } + system( "echo ------- >>".$logfile ); + } + @proc_terminate( $p ); sleep(1); @proc_terminate( $p ); // 2度送る foreach( $cpids as $cpid ) { - @posix_kill( $cpid, SIGTERM ); // sigterm - usleep(100); - @posix_kill( $cpid, SIGKILL ); // sigkill + $ret = posix_kill( $cpid, SIGTERM ); // sigterm + usleep(100*1000); + if( ! $ret ) posix_kill( $cpid, SIGKILL ); // sigkill } + if( DEBUG ) { + global $logfile; + system( "ps ax >>".$logfile ); + system( "echo ------- >>".$logfile ); + } + + foreach( $cpids as $cpid ) { + $ret = posix_kill( $cpid, SIGTERM ); // sigterm + if( $ret ) return false; // 恐らくプロセスが存在するのでエラー + } return true; // 保証できない } ////// ここから本編 - // メッセージハンドラを得る $ipc_key = ftok( RECORDER_CMD, "R" ); $msgh_r = msg_get_queue( $ipc_key );
