管道是多进程通信的常用手段。管道分为无名管道和有名管道。无名管道只能用于具有亲缘关系的进程间通信,而有名管道可以用于同一主机上的任何进程。理解为了便于理解,可以将管道比作文件。进程A向管道P写入数据,然后进程B从管道P读取数据。php提供的管道操作API与操作文件的API基本相同,只是使用了posix_mkfifo函数来创建管道,而读写等操作同文件操作函数。当然你可以直接用文件来模拟管道,但是这样就不能利用管道的特性了。代码//定义管道路径,并创建管道$pipe_path='./test.pipe';if(!file_exists($pipe_path)){if(!posix_mkfifo($pipe_path,0664)){exit("创建管道错误!");}}$pid=pcntl_fork();if($pid==0){//子进程,向管道写入数据$file=fopen($pipe_path,'w');while(true){fwrite($file,'你好世界');$rand=rand(1,3);睡眠($兰特);}exit("childend!\n");}else{//父进程,从管道中读取数据$file=fopen($pipe_path,'r');while(true){$rel=fread($file,11);回声“{$rel}\n”;$rand=rand(1,2);睡眠($兰德);}}运行结果
