- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我试图从 php 中的 proc_open
方法获取输出,但是,当我打印它时,我得到的是空的。
$descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("file", "files/temp/error-output.txt", "a"));$process = proc_open("time ./a a.out", $descriptorspec, $pipes, $cwd);
只要我知道,我就可以用stream_get_contents()
获取输出
echo stream_get_contents($pipes[1]);fclose($pipes[1]);
可是我做不到有什么建议吗?
谢谢之前...
最佳答案
您的代码或多或少适合我。 time
将其输出打印到 stderr
,因此如果您要查找该输出,请查看文件 files/temp/error-output.txt
. stdout
管道 $pipes[1]
将只包含程序 ./a
的输出。
我的重现:
[edan@edan tmp]$ cat proc.php
<?php
$cwd='/tmp';
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "/tmp/error-output.txt", "a") );
$process = proc_open("time ./a a.out", $descriptorspec, $pipes, $cwd);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
?>
[edan@edan tmp]$ php proc.php
a.out here.
[edan@edan tmp]$ cat /tmp/error-output.txt
real 0m0.001s
user 0m0.000s
sys 0m0.002s
关于php - 如何获得 proc_open() 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6014819/
这是我的代码 $descriptorspec = array( 0 => array("pipe", "r") ); $call_mp4 = "ffmpeg command ...... "; $op
我正在尝试将lighttpd编译为处理器arm的静态,以便可以在Android设备上运行。我正在用交叉编译器arm-musl-linuxeabi编译lighttpd,我在https://bitbuck
这是我想要实现的目标:打开一个 shell(korn 或 bash,没关系),从那个 shell,我想打开一个 ssh 连接(ssh user@host)。在某些时候,可能会提示我输入密码,或者可能会
我正在尝试使用 proc_open() 运行进程功能。正如页面上所指定的 - 我提供了自定义环境变量并尝试打印出来。它显示了我提供的所有变量+始终为 3 个变量:“SLVL”、“PWD”、“_=”。我
我想调用proc_open在后台执行一个脚本,后台进程会在几秒后终止。基本上,该脚本是一个 C/Java/Python 脚本,它将编译并运行用户提交的代码,因此我希望该进程能够在一段时间后终止。 我想
我有一个实用函数,用于通过 CLI(cmd、bash 等)执行程序。它返回一个包含 3 个项目的数组:STDOUT、STDERR 和 EXIT CODE。 到目前为止,它运行良好,没有出现问题。事实上
我正在编写可在 *nix 系统下运行的 php 代码。我需要在 php 代码中调用带有 5 个参数的 python 脚本。一些争论是用户输入,所以可能有任何字符。我不知道如何将参数传递给脚本。我将如何
以下脚本监视 /dev/shm/test 是否有新文件并实时输出有关它的信息。 问题是当用户关闭浏览器时,inotifywait 进程仍然打开,等等。 有什么办法可以避免这种情况吗? array("
我目前正在开发一个在线程序。我正在编写一个 php 脚本,它在命令行中使用 proc_open() (在 Linux Ubuntu 下)执行命令。到目前为止,这是我的代码: array("pipe"
我正在使用带有 pdftk 的 proc_open 来用数据预填充一些表格,这工作得很好,但我不想将结果保存到文件然后读回文件,而是直接打印文件.我有这个工作,所以我没有任何问题。但我想将 proc_
我有一个 PHP 脚本,我想从 PHP 脚本调用一个用 C 编写的进程。有很多方法可以做到这一点(系统,执行...),但是选择函数proc_open。有了这个,我可以使用 C 进程在 stdin 和
我正在尝试使用 proc_open(需要双向支持)调用 C++/Python 文件。 在做了一些在线研究后,我发现创建了这段代码:(我首先用 c++ 尝试,失败后我也尝试了 python) PHP:
我正在运行一个sh 脚本,它通过ubuntu服务器上的php运行java进程。我正在使用 proc_open 来运行该进程。通常工作流程如下: 请求页面 -> 脚本运行(直到完成)-> 结果页面。 在
我在 php 中使用 proc_open 来启动一个子进程并来回发送数据。 有时我想等待进程结束并检索退出代码。 问题是如果进程已经完成,我对proc_close 的调用返回-1。对于 proc_cl
我有 2 个 PHP 脚本,分别是 caller.php 和 task.php。 caller.php 使用 JQuery Ajax 请求调用,然后 caller.php 启动一个进程在后台运行 PH
我有一个 PHP 脚本,我在其中使用 proc_open() 创建了一个新进程。它执行了大约 2 小时,最后我有一个 proc_close()。 有时我需要在中间停止这个进程,我如何杀死/发出信号以停
当尝试使用 ffmpeg 将 wmv 文件(转换为 flv)转换为 flv 时,我在 Windows 上遇到了 proc_open 问题,但我怀疑我会遇到每当某些情况发生时,都会发生相同的情况。 基本
所以我用 $process = proc_open("my_process", $descriptors, $pipes); 打开一个进程 然后我使用 fwrite($pipes[0], "some_
在 PHP 中有一个方便的函数叫做 proc_open .它可用于调用可执行文件,将其 stdin、stdout 和 stderr 作为管道打开。 这个函数在 C++ 中有一个很好的跨平台版本吗?唯一
考虑这个示例脚本: STDIN, 1 => STDOUT, 2 => STDERR), $pipes); fgetc(STDIN); 当 /bin/sh 符号链接(symbolic link)到 /
我是一名优秀的程序员,十分优秀!