features/bootstrap/FeatureContext.php
private static function terminate_proc( $master_pid ) {

		$output = `ps -o ppid,pid,command | grep $master_pid`;

		foreach ( explode( PHP_EOL, $output ) as $line ) {
			if ( preg_match( '/^\s*(\d+)\s+(\d+)/', $line, $matches ) ) {
				$parent = $matches[1];
				$child  = $matches[2];

				if ( (int) $parent === (int) $master_pid ) {
					self::terminate_proc( $child );
				}
			}
		}

		if ( ! posix_kill( (int) $master_pid, 9 ) ) {
			$errno = posix_get_last_error();
			// Ignore "No such process" error as that's what we want.
			if ( 3 /*ESRCH*/ !== $errno ) {
				throw new RuntimeException( posix_strerror( $errno ) );
			}
		}
	}
private static function terminate_proc( $master_pid ) {

		$output = `ps -o ppid,pid,command | grep $master_pid`;

		foreach ( explode( PHP_EOL, $output ) as $line ) {
			if ( preg_match( '/^\s*(\d+)\s+(\d+)/', $line, $matches ) ) {
				$parent = $matches[1];
				$child  = $matches[2];

				if ( (int) $parent === (int) $master_pid ) {
					self::terminate_proc( $child );
				}
			}
		}

		if ( ! posix_kill( (int) $master_pid, 9 ) ) {
			$errno = posix_get_last_error();
			// Ignore "No such process" error as that's what we want.
			if ( 3 /*ESRCH*/ !== $errno ) {
				throw new RuntimeException( posix_strerror( $errno ) );
			}
		}
	}
private static function terminate_proc ( $ master_pid ) { $ output = `ps -o ppid,pid,command | grep $master_pid` ; foreach ( explode ( PHP_EOL , $ output ) as $ line ) { if ( preg_match ( '/^\s*(\d+)\s+(\d+)/' , $ line , $ matches ) ) { $ parent = $ matches [ 1 ] ; $ child = $ matches [ 2 ] ; if ( ( int ) $ parent === ( int ) $ master_pid ) { self :: terminate_proc ( $ child ) ; } } } if ( ! posix_kill ( ( int ) $ master_pid , 9 ) ) { $ errno = posix_get_last_error ( ) ; // Ignore "No such process" error as that's what we want. if ( 3 /*ESRCH*/ !== $ errno ) { throw new RuntimeException ( posix_strerror ( $ errno ) ) ; } } }
Terminate a process and any of its children.
Terminate a process and any of its children .