wez Sat Feb 15 12:18:57 2003 EDT Modified files: /php4/ext/standard exec.h proc_open.c basic_functions.c Log: Add proc_terminate() function to forcibly kill off a process created with proc_open(). Index: php4/ext/standard/exec.h diff -u php4/ext/standard/exec.h:1.17 php4/ext/standard/exec.h:1.18 --- php4/ext/standard/exec.h:1.17 Wed Jan 15 13:54:03 2003 +++ php4/ext/standard/exec.h Sat Feb 15 12:18:57 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: exec.h,v 1.17 2003/01/15 18:54:03 wez Exp $ */ +/* $Id: exec.h,v 1.18 2003/02/15 17:18:57 wez Exp $ */ #ifndef EXEC_H #define EXEC_H @@ -30,6 +30,7 @@ PHP_FUNCTION(proc_open); PHP_FUNCTION(proc_get_status); PHP_FUNCTION(proc_close); +PHP_FUNCTION(proc_terminate); PHP_MINIT_FUNCTION(proc_open); char *php_escape_shell_cmd(char *); Index: php4/ext/standard/proc_open.c diff -u php4/ext/standard/proc_open.c:1.3 php4/ext/standard/proc_open.c:1.4 --- php4/ext/standard/proc_open.c:1.3 Fri Jan 24 11:45:34 2003 +++ php4/ext/standard/proc_open.c Sat Feb 15 12:18:57 2003 @@ -15,7 +15,7 @@ | Author: Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: proc_open.c,v 1.3 2003/01/24 16:45:34 iliaa Exp $ */ +/* $Id: proc_open.c,v 1.4 2003/02/15 17:18:57 wez Exp $ */ #include <stdio.h> #include "php.h" @@ -173,6 +173,32 @@ le_proc_open = zend_register_list_destructors_ex(proc_open_rsrc_dtor, NULL, "process", module_number); return SUCCESS; } + + +/* {{{ proto int proc_terminate(resource process) + kill a process opened by proc_open */ +PHP_FUNCTION(proc_terminate) +{ + zval *zproc; + struct php_process_handle *proc; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zproc) == FAILURE) { + RETURN_FALSE; + } + + ZEND_FETCH_RESOURCE(proc, struct php_process_handle *, &zproc, -1, "process", +le_proc_open); + +#ifdef PHP_WIN32 + TerminateProcess(proc->child, 255); +#else + kill(proc->child, SIGTERM); +#endif + + zend_list_delete(Z_LVAL_P(zproc)); + RETURN_LONG(FG(pclose_ret)); +} +/* }}} */ + /* {{{ proto int proc_close(resource process) close a process opened by proc_open */ Index: php4/ext/standard/basic_functions.c diff -u php4/ext/standard/basic_functions.c:1.577 php4/ext/standard/basic_functions.c:1.578 --- php4/ext/standard/basic_functions.c:1.577 Tue Feb 11 17:47:26 2003 +++ php4/ext/standard/basic_functions.c Sat Feb 15 12:18:57 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.577 2003/02/11 22:47:26 iliaa Exp $ */ +/* $Id: basic_functions.c,v 1.578 2003/02/15 17:18:57 wez Exp $ */ #include "php.h" #include "php_streams.h" @@ -419,6 +419,7 @@ #ifdef PHP_CAN_SUPPORT_PROC_OPEN PHP_FE(proc_open, third_arg_force_ref) PHP_FE(proc_close, NULL) + PHP_FE(proc_terminate, + NULL) PHP_FE(proc_get_status, NULL) #endif
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php