我已经使用proc-open
创建了一个进程,但在windows下stream-select不起作用。我试图实现的是从stdout和stderr中读取,同时另外写入stdin并确保输出可以与输入匹配。有没有解决方法来解决这个问题?窗口上的PHP proc_open
回答
对于在Windows上使用流选择无法正常工作的问题,您不是很详细。但是,这是如何使用流选择的一个工作示例。我在Windows XP上使用PHP 5.4成功执行了此操作。
编辑: Uhhmmm ..好像是不工作的再次
编辑毕竟... Sry基因,测试一些更在这里.. :):所以
,我做一些更多的尝试,但没有成功。
也许你应该让进程对对方讲TCP/UDP/IP?另一种前进的方式(如果你仍然想在你的进程中使用stdout/stdin/stderr)可能是使用proc_open和文件处理程序,所以你的进程正在写入文件,然后使用类似于unix的东西'inotify,加载这个东西与PHP DOTNET类:Is there anything like inotify on Windows?检测文件的变化......?只是一个想法...
或者也许更改为unix样os? ;)好吧,今晚就是这样。晚安
'stream_select'在你的考试中人们似乎毫无用处。它只是从'stdout'和'stderr'管道中读取,而没有真正查看'$ read_streams'中返回的内容。这可能会阻止子进程忙(或者当你在等待stdout数据时,孩子写入'stderr') – galymzhan 2012-04-06 14:09:33
是的,经过一些测试,你似乎是对的。呃... – 2012-04-06 15:28:21
@AlfredGodoy - 问题是windows'select'不起作用。但似乎工作的Unix/Linux。对不起,代码不起作用的努力。 – 2012-04-06 16:30:33
- 1. PHP Socket和proc_open
- 2. PHP proc_open在Windows
- 3. proc_open在php
- 4. 确保proc_open将使命令行窗口保持活动状态PHP
- 5. php - proc_open(或其他功能)
- 6. PHP proc_open多次打开
- 7. 检查运行在窗口上的php
- 8. 在窗口和块上的PHP
- 9. Proc_open()C++/python
- 10. 带有超时值的PHP proc_open()
- 11. proc_open for php的命令历史记录
- 12. 在其他窗口之上的窗口
- 13. proc_open交互
- 14. 在窗口上安装php ffmpeg
- 15. PHP在窗口上命名管道
- 16. php imageMagick在窗口
- 17. 窗户上的PHP exec打开cmd窗口
- 18. PHP中的弹出窗口?
- 19. 在PHP中使用proc_open函数
- 20. PHP proc_open管道异常(Win7/Apache2.2)
- 21. PHP proc_open将无法正常工作 - 给
- 22. 父窗口后面的打开的窗口JS或PHP
- 23. 将PHP窗体数据从子窗口传递到父窗口
- 24. 上调整窗口
- 25. 使用proc_open()加载.profile
- 26. 窗口上的“rails”命令
- 27. 窗口上的SQL聚合
- 28. 窗口上的python settings.py
- 29. 窗口上的TensorFlow设置
- 30. 弹出窗口上的EditText
我认为你唯一能做的就是将你的管道设置为非阻塞模式,并且不幸地手动检查它们。 – netcoder 2012-03-28 14:17:56
@netcoder - 我试过了。 'stream_set_blocking'返回false :-( – 2012-03-28 14:21:56
stderr和stdout不能设置为非阻塞 你想要达到什么目的?有一些代码?select可能在这里没有必要 – Pierre 2012-04-01 15:49:09