nlopess Wed Feb 14 19:20:15 2007 UTC
Modified files:
/php-src/ext/standard proc_open.c
/php-src/ext/standard/tests/general_functions bug39322.phpt
proc_open02.phpt
phpcredits.phpt
Log:
MFB
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/proc_open.c?r1=1.52&r2=1.53&diff_format=u
Index: php-src/ext/standard/proc_open.c
diff -u php-src/ext/standard/proc_open.c:1.52
php-src/ext/standard/proc_open.c:1.53
--- php-src/ext/standard/proc_open.c:1.52 Tue Feb 13 19:56:42 2007
+++ php-src/ext/standard/proc_open.c Wed Feb 14 19:20:14 2007
@@ -15,7 +15,7 @@
| Author: Wez Furlong <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: proc_open.c,v 1.52 2007/02/13 19:56:42 nlopess Exp $ */
+/* $Id: proc_open.c,v 1.53 2007/02/14 19:20:14 nlopess Exp $ */
#if 0 && (defined(__linux__) || defined(sun) || defined(__IRIX__))
# define _BSD_SOURCE /* linux wants this when XOPEN mode is on */
@@ -253,7 +253,7 @@
}
/* }}} */
-/* {{{ proto int proc_terminate(resource process [, long signal]) U
+/* {{{ proto bool proc_terminate(resource process [, long signal]) U
kill a process opened by proc_open */
PHP_FUNCTION(proc_terminate)
{
@@ -268,13 +268,18 @@
ZEND_FETCH_RESOURCE(proc, struct php_process_handle *, &zproc, -1,
"process", le_proc_open);
#ifdef PHP_WIN32
- TerminateProcess(proc->childHandle, 255);
+ if (TerminateProcess(proc->childHandle, 255)) {
+ RETURN_TRUE;
+ } else {
+ RETURN_FALSE;
+ }
#else
- kill(proc->child, sig_no);
+ if (kill(proc->child, sig_no) == 0) {
+ RETURN_TRUE;
+ } else {
+ RETURN_FALSE;
+ }
#endif
-
- zend_list_delete(Z_LVAL_P(zproc));
- RETURN_LONG(FG(pclose_ret));
}
/* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/general_functions/bug39322.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/standard/tests/general_functions/bug39322.phpt
diff -u /dev/null php-src/ext/standard/tests/general_functions/bug39322.phpt:1.2
--- /dev/null Wed Feb 14 19:20:15 2007
+++ php-src/ext/standard/tests/general_functions/bug39322.phpt Wed Feb 14
19:20:15 2007
@@ -0,0 +1,44 @@
+--TEST--
+bug #39322: proc_terminate() loosing process resource
+--SKIPIF--
+<?php
+if (!is_executable('/bin/sleep')) echo 'skip sleep not found';
+?>
+--FILE--
+<?php
+$descriptors = array(
+ 0 => array('pipe', 'r'),
+ 1 => array('pipe', 'w'),
+ 2 => array('pipe', 'w'));
+
+$pipes = array();
+
+$process = proc_open('/bin/sleep 120', $descriptors, $pipes);
+
+proc_terminate($process);
+sleep(1); // wait a bit to let the process finish
+var_dump(proc_get_status($process));
+
+echo "Done!\n";
+
+?>
+--EXPECTF--
+array(8) {
+ ["command"]=>
+ string(14) "/bin/sleep 120"
+ ["pid"]=>
+ int(%d)
+ ["running"]=>
+ bool(false)
+ ["signaled"]=>
+ bool(true)
+ ["stopped"]=>
+ bool(false)
+ ["exitcode"]=>
+ int(-1)
+ ["termsig"]=>
+ int(15)
+ ["stopsig"]=>
+ int(0)
+}
+Done!
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/general_functions/proc_open02.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/standard/tests/general_functions/proc_open02.phpt
diff -u /dev/null
php-src/ext/standard/tests/general_functions/proc_open02.phpt:1.2
--- /dev/null Wed Feb 14 19:20:15 2007
+++ php-src/ext/standard/tests/general_functions/proc_open02.phpt Wed Feb
14 19:20:15 2007
@@ -0,0 +1,70 @@
+--TEST--
+proc_open
+--SKIPIF--
+<?php
+if (!is_executable('/bin/sleep')) echo 'skip no sleep';
+if (!is_executable('/bin/nohup')) echo 'skip no nohup';
+?>
+--FILE--
+<?php
+$ds = array(array('pipe', 'r'));
+
+$cat = proc_open(
+ '/bin/nohup /bin/sleep 50',
+ $ds,
+ $pipes
+);
+
+var_dump(proc_terminate($cat, 1)); // send a SIGHUP
+sleep(1);
+var_dump(proc_get_status($cat));
+
+var_dump(proc_terminate($cat)); // now really quit it
+sleep(1);
+var_dump(proc_get_status($cat));
+
+proc_close($cat);
+
+echo "Done!\n";
+
+?>
+--EXPECTF--
+bool(true)
+array(8) {
+ ["command"]=>
+ string(24) "/bin/nohup /bin/sleep 50"
+ ["pid"]=>
+ int(%d)
+ ["running"]=>
+ bool(true)
+ ["signaled"]=>
+ bool(false)
+ ["stopped"]=>
+ bool(false)
+ ["exitcode"]=>
+ int(-1)
+ ["termsig"]=>
+ int(0)
+ ["stopsig"]=>
+ int(0)
+}
+bool(true)
+array(8) {
+ ["command"]=>
+ string(24) "/bin/nohup /bin/sleep 50"
+ ["pid"]=>
+ int(%d)
+ ["running"]=>
+ bool(false)
+ ["signaled"]=>
+ bool(true)
+ ["stopped"]=>
+ bool(false)
+ ["exitcode"]=>
+ int(-1)
+ ["termsig"]=>
+ int(15)
+ ["stopsig"]=>
+ int(0)
+}
+Done!
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/general_functions/phpcredits.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/standard/tests/general_functions/phpcredits.phpt
diff -u php-src/ext/standard/tests/general_functions/phpcredits.phpt:1.2
php-src/ext/standard/tests/general_functions/phpcredits.phpt:1.3
--- php-src/ext/standard/tests/general_functions/phpcredits.phpt:1.2 Fri Nov
24 20:20:51 2006
+++ php-src/ext/standard/tests/general_functions/phpcredits.phpt Wed Feb
14 19:20:15 2007
@@ -22,7 +22,7 @@
Language Design & Concept
%s
-%wPHP %d Authors%w
+%wPHP Authors%w
%s
%wSAPI Modules%w
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php