php中通过命名管道实现跨语言进程间通信的案例

  介绍

这篇文章主要介绍了php中通过命名管道实现跨语言进程间通信的案例,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

<强>进程通信:

1,中断系统

2,无名管道【半双工通信】

只能用于父子进程,兄弟进程之间的通信,且没有名字,称为无名管道,传输的数据是无格式的,双方可自己定义格式,不依赖于文件系统。

3,命名管道

用于无名管道无法实现的骚操作,没任何关系的进程也能进行通信【就是依赖于一个文件描述符,只不过这文件是一个FIFO类型的文件即管道文件,遵守FIFO原则,即队列先进先出】

PS:务必了解进程阻塞,非阻塞原理,管道文件,进程【运行状态转移】

应用场景举例说明:如使用php的套接字API编写一个类似workerman的网络框架,可以做统一中断信号事件处理

中断处理程序只负责接受中断请求,通过管道写端写入数据,主进程通过监听文件描述符上的事件【可读事件【可以私下去撸一下流套接字相关API,以及了解下IO复用函数的使用方法】再处理,不会让中断处理程序等待过长的时间。

当然通过命名管道也可以实现跨语言进程间的通信。

$ filePath=$ argv [1];   如果(posix_mkfifo (filePath 0666美元)& lt; 0) {   流(STDOUT,“命名管道创建错误“);   退出(0);   }   $ fd=fopen (filePath美元,“w");   而(is_resource (fd)美元){   “流(STDOUT,“;;);   $ data=https://www.yisu.com/zixun/fgets (STDIN);   如果(元数据){   写入文件(fd,数据,美元strlen(元数据));   }   }   退出(0); $ filePath=$ argv [1];   如果(posix_mkfifo (filePath 0666美元)& lt; 0) {   流(STDOUT,“命名管道创建错误“);   退出(0);   }   $ fd=fopen (filePath美元,“r");   而(is_resource (fd)美元){   美元$ data=https://www.yisu.com/zixun/fgets (fd);   如果(元数据){   写入文件(STDIN,数据,美元strlen(元数据));   }   }   退出(0);

感谢你能够认真阅读完这篇文章,希望小编分享php中通过命名管道实现跨语言进程间通信的案例内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

php中通过命名管道实现跨语言进程间通信的案例