问题标签 [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.

0 投票
1 回答
1539 浏览

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 的终端仿真器。欢迎任何有关如何执行此操作的建议:)

0 投票
1 回答
2188 浏览

php - proc_open() 的多输入

我目前正在开发一个在线程序。我正在编写一个 php 脚本,它使用 proc_open()(在 Linux Ubuntu 下)在命令行中执行命令。到目前为止,这是我的代码:

power 是一个要求输入 2 次的程序(它需要一个底数和一个指数并计算底数 ^ 指数)。它是用汇编写的。但是当我运行这个脚本时,我得到了错误的输出。我的输出是“1”,但我希望输出 4^5。

当我运行一个接受一个输入的程序时,它可以工作(我测试了一个简单的程序,它将输入的值加一)。

我想我错过了关于 fwrite 命令的一些东西。有人可以帮我吗?

提前致谢!

0 投票
2 回答
14204 浏览

php - fclose(): 18 不是有效的流资源

我正在尝试使用 proc_open 执行进程。进程的 I/O 由管道处理!

现在,碰巧的是,有时我打开的“c 程序”确实卡住了,我添加了一个 max_time_limit 检查,它会强制关闭进程。我添加了回调函数 - 即 onExit -(使用“call_user_function”)以在“进程退出”时以有效方式或强制方式处理信息。

在“退出”功能中,我正在关闭 i/o 管道

如果进程有一个有效的退出,上面的工作非常好。但是,在我强行终止进程的情况下,我调用了 proc_terminate 来执行此操作。我知道进程的终止也会继续并关闭任何 I/O 管道,但问题是由于回调,我的“onExit”函数进程总是被调用(这就是我想要的方式.. .因为我需要做更多的处理)。现在,在这种情况下,当我尝试关闭管道时,我收到以下错误:

我尝试使用“ftell”来检查管道是否有效,但这也出错了。如何检查管道是否已经关闭?

0 投票
1 回答
831 浏览

php - PHP stream_select 不起作用

我正在使用 Windows 7 和 php 5。

我在通过 proc_open 执行进程并检查超时时遇到问题。我使用 stream_select 通过以下代码检查超时:

这是我用来测试的 C++ 代码:

在该代码中,根本没有输出,但 stream_select 不会等待 1 秒并返回 1。

我怎样才能解决这个问题?

0 投票
8 回答
3664 浏览

php - 如何在后台运行一个php文件

可能重复:
管理长时间运行的 php 脚本的最佳方法?

我必须建立一个大电子邮件列表。一切正常,但是当我提交表单页面时正在加载,直到每封电子邮件都发送完毕。所以我希望这个电子邮件发送脚本在后台运行。并注意脚本在后台运行的用户。我不能使用 Ajax。

我想要类似.. proc_open,exec,shell_exec ..

0 投票
1 回答
2127 浏览

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 管道已关闭,所以我无法发送它。那么是否有可能以某种方式向进程发送另一个命令?

0 投票
1 回答
651 浏览

php - php exec 建议/替代方案

谁能给我一些关于 PHP 命令执行和最佳实践的建议?

我目前正在尝试解析一些 netbackup 数据,但我遇到了与系统调用返回的大量数据相关的问题。为了减少我正在检索的数据量,我正在做这样的事情:

我使用 awk 来限制接收的数据量。没有它,我最终会收到近 150mb 的数据,有了它,我会得到更易于管理的约 800k 数据。

你不需要告诉我 awk 狗屎很讨厌 - 我已经知道了......但是为了改善我自己(和我的代码)的利益,任何人都可以提出替代方案吗?

我在想类似的东西,proc_open但真的不确定这是否会带来任何好处。

0 投票
3 回答
2544 浏览

php - PHP - 当 javaw 可执行文件仍在运行时,proc_get_status 'running' 返回 false

我正在使用一个无限循环的java文件执行javaw:

在第一次调用时proc_get_statusrunning属性返回true。在第二次调用(一秒后)到 时proc_get_statusrunning返回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 不同。

0 投票
1 回答
232 浏览

php - 如何同时使用 proc_open 生成两个进程?

我只想一次创建两个notepad.exe进程,但是没有创建第二个进程,直到第一个notepad.exe被杀死。如何一次创建多进程?

0 投票
1 回答
1528 浏览

php - 在php中连接进程的管道

我希望使用 proc_open 创建的一个进程的输出通过管道传输到使用 proc_open(在 php 中)创建的另一个进程。例如。在 bash 我可以这样做:

我想使用 proc_open(而不是 shell_exec)在 php 中模拟这个,以便控制返回码、管道等。所以我想要这样的东西:

有人知道我如何模拟“|” php中的bash,即将cat-process的第二个描述符连接到sort-process的第一个描述符?任何帮助,将不胜感激!但请不要将我重定向到 shell_exec,因为我希望能够检查退出代码并记录错误:)。

编辑:

顺便说一句,我需要工作的业务解决方案是:

这基本上是操作系统会做的事情,但我不想自己进行管道管理,因为我有一个内核/posix,老实说,这不是 1976 年 :)