public function start() {
		$pid = @ pcntl_fork();
		if( $pid == -1 ) {
			throw new Exception( $this->getError( Thread::COULD_NOT_FORK ), Thread::COULD_NOT_FORK );
		}
		if( $pid ) {
			// parent
			$this->pid = $pid;
		}
		else {
			// child
			pcntl_signal( SIGTERM, array( $this, 'signalHandler' ) );
			$arguments = func_get_args();
			if ( !empty( $arguments ) ) {
				call_user_func_array( $this->runnable, $arguments );
			}
			else {
				call_user_func( $this->runnable );
			}

			exit( 0 );
		}
	}