1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
--TEST--
Test popen() and pclose function: basic functionality
--SKIPIF--
<?php
if(substr(PHP_OS, 0, 3) == 'WIN' )
die("skip Not Valid for Windows");
?>
--FILE--
<?php
/*
* Prototype: resource popen ( string command, string mode )
* Description: Opens process file pointer.
*
* Prototype: int pclose ( resource handle );
* Description: Closes process file pointer.
*/
$file_path = dirname(__FILE__);
require($file_path."/file.inc");
echo "*** Testing popen() and pclose() with different processes ***\n";
echo "-- Testing popen(): reading from the pipe --\n";
$dirpath = $file_path."/popen_basic";
mkdir($dirpath);
touch($dirpath."/popen_basic.tmp");
define('CMD', "ls $dirpath");
$file_handle = popen(CMD, 'r');
fpassthru($file_handle);
pclose($file_handle);
echo "-- Testing popen(): reading from a file using 'cat' command --\n";
create_files($dirpath, 1, "text_with_new_line", 0755, 100, "w", "popen_basic", 1, "bytes");
$filename = $dirpath."/popen_basic1.tmp";
$command = "cat $filename";
$file_handle = popen($command, "r");
$return_value = fpassthru($file_handle);
echo "\n";
var_dump($return_value);
pclose($file_handle);
delete_files($dirpath, 1);
echo "*** Testing popen(): writing to the pipe ***\n";
$arr = array("ggg", "ddd", "aaa", "sss");
$file_handle = popen("sort", "w");
$counter = 0;
$newline = "\n";
foreach($arr as $str) {
fwrite($file_handle, $str);
fwrite($file_handle, $newline);
}
pclose($file_handle);
echo "*** Testing for return type of popen() and pclose() functions ***\n";
$string = "Test String";
$return_value_popen = popen("echo $string", "r");
var_dump( is_resource($return_value_popen) );
fpassthru($return_value_popen);
$return_value_pclose = pclose($return_value_popen);
var_dump( is_int($return_value_pclose) );
echo "\n--- Done ---";
?>
--CLEAN--
<?php
$file_path = dirname(__FILE__);
$dirpath = $file_path."/popen_basic";
unlink($dirpath."/popen_basic.tmp");
unlink($dirpath."/popen_basic1.tmp");
rmdir($dirpath);
?>
--EXPECTF--
*** Testing popen() and pclose() with different processes ***
-- Testing popen(): reading from the pipe --
popen_basic.tmp
-- Testing popen(): reading from a file using 'cat' command --
line
line of text
line
line of text
line
line of text
line
line of text
line
line of text
line
line
int(100)
*** Testing popen(): writing to the pipe ***
aaa
ddd
ggg
sss
*** Testing for return type of popen() and pclose() functions ***
bool(true)
Test String
bool(true)
--- Done ---
--UEXPECTF--
*** Testing popen() and pclose() with different processes ***
-- Testing popen(): reading from the pipe --
popen_basic.tmp
-- Testing popen(): reading from a file using 'cat' command --
line
line of text
line
line of text
line
line of text
line
line of text
line
line of text
line
line
int(100)
*** Testing popen(): writing to the pipe ***
aaa
ddd
ggg
sss
*** Testing for return type of popen() and pclose() functions ***
bool(true)
Test String
bool(true)
--- Done ---
|