函数原型:
``` 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