/**
  * Closes process resource, closes file handles, sets the exitcode.
  *
  * @return int The exitcode
  */
 private function close()
 {
     $this->processPipes->close();
     if (is_resource($this->process)) {
         $exitcode = proc_close($this->process);
     } else {
         $exitcode = -1;
     }
     $this->exitcode = -1 !== $exitcode ? $exitcode : (null !== $this->exitcode ? $this->exitcode : -1);
     $this->status = self::STATUS_TERMINATED;
     if (-1 === $this->exitcode && null !== $this->fallbackExitcode) {
         $this->exitcode = $this->fallbackExitcode;
     } elseif (-1 === $this->exitcode && $this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) {
         // if process has been signaled, no exitcode but a valid termsig, apply Unix convention
         $this->exitcode = 128 + $this->processInformation['termsig'];
     }
     return $this->exitcode;
 }
Beispiel #2
0
 /**
  * Closes process resource, closes file handles, sets the exitcode.
  *
  * @return int The exitcode
  */
 private function close()
 {
     $this->processPipes->close();
     if (is_resource($this->process)) {
         $exitcode = proc_close($this->process);
     } else {
         $exitcode = -1;
     }
     $this->exitcode = -1 !== $exitcode ? $exitcode : (null !== $this->exitcode ? $this->exitcode : -1);
     $this->status = self::STATUS_TERMINATED;
     if (-1 === $this->exitcode && null !== $this->fallbackExitcode) {
         $this->exitcode = $this->fallbackExitcode;
     } elseif (-1 === $this->exitcode && $this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) {
         // if process has been signaled, no exitcode but a valid termsig, apply Unix convention
         $this->exitcode = 128 + $this->processInformation['termsig'];
     }
     // Free memory from self-reference callback created by buildCallback
     // Doing so in other contexts like __destruct or by garbage collector is ineffective
     // Now pipes are closed, so the callback is no longer necessary
     $this->callback = null;
     return $this->exitcode;
 }