April 27, 2011, 3:03 a.m.
posted by stackme
Reading Standard Output from a Program
To read the entire contents of a program's output, use the backtick (`) operator, as in Figure.
Running a program with backticks
To read the output incrementally, open a pipe with popen( ), as in Figure.
Reading output from popen( )
The backtick operator, which is not available in safe mode, executes a program and returns all its output as a single string. On a Linux system with 448 MB of RAM, the command $s = `/usr/bin/free`; puts the following multiline string in $s:
total used free shared buffers cached Mem: 448620 446384 2236 0 68568 163040 -/+ buffers/cache: 214776 233844 Swap: 136512 0 136512
If a program generates a lot of output, it is more memory efficient to read from a pipe one line at a time. If you're printing formatted data to the browser based on the output of the pipe, you can print it as you get it. Figure prints information about recent Unix system logins formatted as an HTML table. It uses the /usr/bin/last command.
Printing recent logins with popen( )
Documentation on popen( ) at http://www.php.net/popen, pclose( ) at http://www.php.net/pclose, the backtick operator at http://www.php.net/language.operators.execution, and safe mode at http://www.php.net/features.safe-mode.