exec() does not show any output and returns only the last line as a string.
passthru() sends any output from the invoked program directly to the browser, unmolested.
the backtick operator assigns any output from an invoked program to a variable, which can be very handy. From the manual:
$output = ls -al;
echo "<pre>$output</pre>";
What are you trying to do, and where is the trouble?