23.18.1. ProblemYou want to read the output from a program; for example, you want the output of a system utility such as route(8) that provides network information. 23.18.2. SolutionTo read the entire contents of a program's output, use the backtick (`) operator, as in Example 23-44. Running a program with backticks
To read the output incrementally, open a pipe with popen( ), as in Example 23-45. Reading output from popen( )
23.18.3. DiscussionThe 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. Example 23-46 prints information about recent Unix system logins formatted as an HTML table. It uses the /usr/bin/last command. Printing recent logins with popen( )
23.18.4. See AlsoDocumentation 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. |