【问题标题】:Affects variables in php with popen用 popen 影响 php 中的变量
【发布时间】:2017-03-29 20:40:48
【问题描述】:

我有这个 php 代码:

<?php 
while (@ ob_end_flush()); // end all output buffers if any

$proc = popen("test.o", 'r');
echo '<pre>';
while (!feof($proc))
{
    $a = fread($proc, 1);;
	echo $a;
    @ flush();
}
echo '</pre>';
?>

和来自 test.c 的 test.o :

test.c:

#include <stdio.h>
#include <stdlib.h>

void main()
{
	int a=0;
  int b=1;
	printf("%d\n",a);
	printf("%d\n",b);
}

当我运行 php 代码时,它给了我 0 和 1,但是你如何影响每个新变量中的这两个数字?

我的意思是,我想将每一行放在一个变量中,然后在我对一个变量进行回显之后。

事实是,在这个示例之后,我将使用它从另一个 C 文件中读取数据,该文件的输出不仅是 2 行,而且是未定义的行。

谢谢。

【问题讨论】:

  • 除非popen 只需要exec("test.o", $output); 并且数组将包含每一行输出。

标签: php


【解决方案1】:

使用fgets() 读取一行。在添加到数组的循环中执行此操作。

$proc = popen("test.o", 'r');
$lines = array();
while ($line = fgets($proc)) {
    $lines[] = trim($line);
}
pclose($proc);
var_dump($lines);

trim() 将删除每一行之后的换行符。

另见PHP - while loop (!feof()) isn't outputting/showing everything

【讨论】:

  • 事实上,在这个例子之后,我将使用它从另一个 C 文件中读取数据,其输出不仅是 2 行,而且是未定义的行。
  • 在这种情况下,在循环中调用 fgets() 并将它们推送到数组中。
猜你喜欢
  • 2023-04-01
  • 2014-07-02
  • 2021-12-30
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2015-03-01
相关资源
最近更新 更多