#### Process
~~~
/**
* 构造方法
* @param string $commandline 指令
* @param string|null $cwd 工作目录
* @param array|null $env 环境变量
* @param string|null $input 输入
* @param int|float|null $timeout 超时时间
* @param array $options proc_open的选项
* @throws \RuntimeException
* @api
*/
$process = new Process($commandline, $cwd = null, array $env = null, $input = null, $timeout = 60, array $options = []);
// 停止
$process->__destruct();
// 克隆
$process->__clone();
/**
* 运行指令
* @param callback|null $callback
* @return int
*/
$process->run($callback = null);
/**
* 运行指令
* @param callable|null $callback
* @return self
* @throws \RuntimeException
* @throws ProcessFailedException
*/
$process->mustRun($callback = null);
/**
* 启动进程并写到 STDIN 输入后返回。
* @param callable|null $callback
* @throws \RuntimeException
* @throws \RuntimeException
* @throws \LogicException
*/
$process->start($callback = null);
/**
* 重启进程
* @param callable|null $callback
* @return Process
* @throws \RuntimeException
* @throws \RuntimeException
*/
$process->restart($callback = null);
/**
* 等待要终止的进程
* @param callable|null $callback
* @return int
*/
$process->wait($callback = null);
/**
* 获取PID
* @return int|null
* @throws \RuntimeException
*/
$process->getPid();
/**
* 将一个 POSIX 信号发送到进程中
* @param int $signal
* @return Process
*/
$process->signal($signal);
// 禁用从底层过程获取输出和错误输出。
$process->disableOutput();
// 开启从底层过程获取输出和错误输出。
$process->enableOutput();
// 输出是否禁用
$process->isOutputDisabled();
/**
* 获取当前的输出管道
* @return string
* @throws \LogicException
* @throws \LogicException
* @api
*/
$process->getOutput();
// 以增量方式返回的输出结果。
$process->getIncrementalOutput();
// 清空输出
$process->clearOutput();
// 返回当前的错误输出的过程 (STDERR)。
$process->getErrorOutput();
// 以增量方式返回 errorOutput
$process->getIncrementalErrorOutput();
// 清空 errorOutput
$process->clearErrorOutput();
/**
* 获取退出码
* @return null|int
*/
$process->getExitCode();
/**
* 获取退出文本
* @return null|string
*/
$process->getExitCodeText();
// 检查是否成功
$process->isSuccessful();
// 是否未捕获的信号已被终止子进程
$process->hasBeenSignaled();
// 返回导致子进程终止其执行的数。
$process->getTermSignal();
// 检查是否正在运行
$process->isRunning();
// 检查是否已开始
$process->isStarted();
// 检查是否已终止
$process->isTerminated();
// 获取当前的状态
$process->getStatus();
// 终止进程
$process->stop();
// 添加一行输出
$process->addOutput($line);
// 添加一行错误输出
$process->addErrorOutput($line);
// 获取被执行的指令
$process->getCommandLine();
// 设置指令
$process->setCommandLine($commandline);
// 获取超时时间
$process->getTimeout();
// 获取idle超时时间
$process->getIdleTimeout();
// 设置超时时间
$process->setTimeout($timeout);
// 设置idle超时时间
$process->setIdleTimeout($timeout);
// 设置TTY
$process->setTty($tty);
// 检查是否是tty模式
$process->isTty();
// 设置pty模式
$process->setPty($bool);
// 是否是pty模式
$process->isPty();
// 获取工作目录
$process->getWorkingDirectory();
// 设置工作目录
$process->setWorkingDirectory($cwd);
// 获取环境变量
$process->getEnv();
// 设置环境变量
$process->setEnv(array $env);
// 获取输入
$process->getInput();
// 设置输入
$process->setInput($input);
// 获取proc_open的选项
$process->getOptions();
// 设置proc_open的选项
$process->setOptions(array $options);
// 是否兼容windows
$process->getEnhanceWindowsCompatibility();
// 设置是否兼容windows
$process->setEnhanceWindowsCompatibility($enhance);
// 返回是否 sigchild 兼容模式激活
$process->getEnhanceSigchildCompatibility();
// 激活 sigchild 兼容性模式。
$process->setEnhanceSigchildCompatibility($enhance);
// 是否超时
$process->checkTimeout();
// 是否支持pty
Process::isPtySupported();
// 创建所需的 proc_open 的描述符
$this->getDescriptors();
// 建立 wait () 使用的回调。
$this->buildCallback($callback);
// 更新状态
$this->updateStatus($blocking);
// 是否开启 '--enable-sigchild'
$this->isSigchildEnabled();
// 验证是否超时
$this->validateTimeout($timeout);
// 读取pipes
$this->readPipes($blocking, $close);
// 捕获退出码
$this->captureExitCode();
/**
* 关闭资源
* @return int 退出码
*/
$this->close();
// 重置数据
$this->resetProcessData();
// 将一个 POSIX 信号发送到进程中。
$this->doSignal($signal, $throwException);
// 确保进程已经开启
$this->requireProcessIsStarted($functionName);
// 确保进程已经终止
$this->requireProcessIsTerminated($functionName);
~~~