函數原型:
``` php
int swoole_process::__construct(mixed $function, $redirect_stdin_stdout = false, $create_pipe = true);
```
- `$function`,子進程創建成功后要執行的函數,底層會自動將函數保存到對象的callback屬性上。
- 如果希望更改執行的函數,可賦值新的函數到對象的callback屬性。
- `$redirect_stdin_stdout`,重定向子進程的標準輸入和輸出。啟用此選項后,在進程內echo將不是打印屏幕,而是寫入到管道。讀取鍵盤輸入將變為從管道中讀取數據。默認為阻塞讀取。
- `$create_pipe`,是否創建管道,啟用`$redirect_stdin_stdout`后,此選項將忽略用戶參數,強制為true 如果子進程內沒有進程間通信,可以設置為false。
- 1.7.22或更高版本允許設置管道的類型,默認為`SOCK_STREAM`流式
參數`$create_pipe`為2時,管道類型將設置為`SOCK_DGRAM`。
``` php
<?php
$process = new swoole_process(function(swoole_process $worker){
while (true){
$cmd = $worker->read();
passthru($cmd);
}
}, true, 2);
$process->start();
$process->write('ls -l');//將參數傳入子進程內
echo $data = $process->read();//獲取執行結果
```
實例:web版本的shell
https://github.com/52fhy/swoole_demo/blob/master/swoole_shell_server.php