问题标签 [proc-open]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 与 stream_select 一起使用时,总是阻止从通过 php 的 proc_open 打开的管道读取
我正在谈论一个需要使用以下(PHP 5.3/Ubuntu 12.04)进行用户交互的进程,
这是我在 C 语言中的测试程序,
现在,即使将 if设置为 non-blocking where as write to never blocks ,问题$r
始终是空的。但是,如果我没有匹配测试程序的读写,事情就可以正常工作,stream_select
$pipes[1]
$pipes[0]
stream_select
我无法弄清楚这里发生了什么。我正在尝试在这里实现某种基于 Web 的终端仿真器。欢迎任何有关如何执行此操作的建议:)
php - proc_open() 的多输入
我目前正在开发一个在线程序。我正在编写一个 php 脚本,它使用 proc_open()(在 Linux Ubuntu 下)在命令行中执行命令。到目前为止,这是我的代码:
power 是一个要求输入 2 次的程序(它需要一个底数和一个指数并计算底数 ^ 指数)。它是用汇编写的。但是当我运行这个脚本时,我得到了错误的输出。我的输出是“1”,但我希望输出 4^5。
当我运行一个接受一个输入的程序时,它可以工作(我测试了一个简单的程序,它将输入的值加一)。
我想我错过了关于 fwrite 命令的一些东西。有人可以帮我吗?
提前致谢!
php - fclose(): 18 不是有效的流资源
我正在尝试使用 proc_open 执行进程。进程的 I/O 由管道处理!
现在,碰巧的是,有时我打开的“c 程序”确实卡住了,我添加了一个 max_time_limit 检查,它会强制关闭进程。我添加了回调函数 - 即 onExit -(使用“call_user_function”)以在“进程退出”时以有效方式或强制方式处理信息。
在“退出”功能中,我正在关闭 i/o 管道
如果进程有一个有效的退出,上面的工作非常好。但是,在我强行终止进程的情况下,我调用了 proc_terminate 来执行此操作。我知道进程的终止也会继续并关闭任何 I/O 管道,但问题是由于回调,我的“onExit”函数进程总是被调用(这就是我想要的方式.. .因为我需要做更多的处理)。现在,在这种情况下,当我尝试关闭管道时,我收到以下错误:
我尝试使用“ftell”来检查管道是否有效,但这也出错了。如何检查管道是否已经关闭?
php - PHP stream_select 不起作用
我正在使用 Windows 7 和 php 5。
我在通过 proc_open 执行进程并检查超时时遇到问题。我使用 stream_select 通过以下代码检查超时:
这是我用来测试的 C++ 代码:
在该代码中,根本没有输出,但 stream_select 不会等待 1 秒并返回 1。
我怎样才能解决这个问题?
php - 如何在后台运行一个php文件
可能重复:
管理长时间运行的 php 脚本的最佳方法?
我必须建立一个大电子邮件列表。一切正常,但是当我提交表单页面时正在加载,直到每封电子邮件都发送完毕。所以我希望这个电子邮件发送脚本在后台运行。并注意脚本在后台运行的用户。我不能使用 Ajax。
我想要类似.. proc_open,exec,shell_exec ..
php - 多次写入使用 proc_open 打开的进程
所以我打开一个进程$process = proc_open("my_process", $descriptors, $pipes);
然后我使用写入进程的标准输入fwrite($pipes[0], "some_command");
然后我必须先关闭管道,fclose($pipes[0]);
然后才能使用$output = stream_get_contents($pipes[1]);
. 如果我不关闭管道,我的 php 脚本将挂在此调用上。
但是,一旦我收到来自 stdout 的输出,如果我想向进程发送另一个命令……stdin 管道已关闭,所以我无法发送它。那么是否有可能以某种方式向进程发送另一个命令?
php - php exec 建议/替代方案
谁能给我一些关于 PHP 命令执行和最佳实践的建议?
我目前正在尝试解析一些 netbackup 数据,但我遇到了与系统调用返回的大量数据相关的问题。为了减少我正在检索的数据量,我正在做这样的事情:
我使用 awk 来限制接收的数据量。没有它,我最终会收到近 150mb 的数据,有了它,我会得到更易于管理的约 800k 数据。
你不需要告诉我 awk 狗屎很讨厌 - 我已经知道了......但是为了改善我自己(和我的代码)的利益,任何人都可以提出替代方案吗?
我在想类似的东西,proc_open
但真的不确定这是否会带来任何好处。
php - PHP - 当 javaw 可执行文件仍在运行时,proc_get_status 'running' 返回 false
我正在使用一个无限循环的java文件执行javaw:
在第一次调用时proc_get_status
,running
属性返回true。在第二次调用(一秒后)到 时proc_get_status
,running
返回false。但是,应用程序 javaw.exe仍在运行(我调用proc_get_status
了一个最终会超时的 while 循环。)
我的目标是在超时后终止程序。在这里看到一个类似的问题。我在 Win7 64 位 PHP 5.3 上运行
Var dump on $status
:(注意;我尝试申请stream_set_blocking($pipes[0], 0) ;
,同样的问题)
在进入超时循环之前:
在第一次迭代/睡眠(1)之后:
经过测试,$status['pid'] 似乎与 Windows 资源监视器下 javaw.exe 的 pid 不同。
php - 如何同时使用 proc_open 生成两个进程?
我只想一次创建两个notepad.exe进程,但是没有创建第二个进程,直到第一个notepad.exe被杀死。如何一次创建多进程?
php - 在php中连接进程的管道
我希望使用 proc_open 创建的一个进程的输出通过管道传输到使用 proc_open(在 php 中)创建的另一个进程。例如。在 bash 我可以这样做:
我想使用 proc_open(而不是 shell_exec)在 php 中模拟这个,以便控制返回码、管道等。所以我想要这样的东西:
有人知道我如何模拟“|” php中的bash,即将cat-process的第二个描述符连接到sort-process的第一个描述符?任何帮助,将不胜感激!但请不要将我重定向到 shell_exec,因为我希望能够检查退出代码并记录错误:)。
编辑:
顺便说一句,我需要工作的业务解决方案是:
这基本上是操作系统会做的事情,但我不想自己进行管道管理,因为我有一个内核/posix,老实说,这不是 1976 年 :)