2017-03-29 1 views
0

Ich habe diese PHP-Code:Beeinflusst Variablen in PHP mit popen

<?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);; 
 
\t echo $a; 
 
    @ flush(); 
 
} 
 
echo '</pre>'; 
 
?>

und test.o, die aus test.c kommt:

test.c:

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

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

Wenn ich den PHP-Code ausführen gibt es mir 0 und 1, aber wie beeinflussen Sie diese beiden Zahlen in jeder neuen Variablen?

Ich meine, ich würde gerne jede Zeile in eine Variable setzen und nachdem ich zum Beispiel eine Variable von echo gemacht.

Tatsache ist, dass ich nach diesem Beispiel es zum Lesen von Daten aus einer anderen C-Datei verwenden wird, die die Ausgabe nicht nur 2 Zeilen, sondern eine undefinierte Zeilen sein wird.

Danke.

+0

Es sei denn, 'popen' nur' exec benötigt wird ("test.o", $ output); 'und Array wird jede Zeile der Ausgabe enthalten. – AbraCadaver

Antwort

1

Verwenden Sie fgets(), um eine Zeile zu lesen. Tun Sie es in einer Schleife, die zu einem Array hinzugefügt wird.

trim() werden die Zeilenumbrüche nach jeder Zeile entfernen.

Siehe auch PHP - while loop (!feof()) isn't outputting/showing everything

+0

Tatsache ist, dass ich nach diesem Beispiel es zum Lesen von Daten aus einer anderen C-Datei verwenden wird, die nicht nur 2 Zeilen, sondern eine undefinierte Zeilen ausgeben wird. – Zekeriya

+0

In diesem Fall rufen Sie 'fgets()' in einer Schleife auf und schieben Sie sie auf ein Array. – Barmar