cvs: php4 /ext/standard exec.c

From: Date: Wed, 10 Jan 2001 13:08:14 +0000
Subject: cvs: php4 /ext/standard exec.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-3538@lists.php.net to get a copy of this message
thies Wed Jan 10 05:08:14 2001 EDT Modified files: /php4/ext/standard exec.c Log: exec'd processes now get cleaned up even if the browser connections was aborted. fixes: #8143 Index: php4/ext/standard/exec.c diff -u php4/ext/standard/exec.c:1.44 php4/ext/standard/exec.c:1.45 --- php4/ext/standard/exec.c:1.44 Mon Jan 8 08:39:39 2001 +++ php4/ext/standard/exec.c Wed Jan 10 05:08:14 2001 @@ -15,7 +15,7 @@ | Author: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ -/* $Id: exec.c,v 1.44 2001/01/08 16:39:39 stas Exp $ */ +/* $Id: exec.c,v 1.45 2001/01/10 13:08:14 thies Exp $ */ #include <stdio.h> #include "php.h" @@ -23,6 +23,7 @@ #include "php_string.h" #include "safe_mode.h" #include "ext/standard/head.h" +#include "ext/standard/file.h" #include "exec.h" #include "php_globals.h" #include "SAPI.h" @@ -45,6 +46,7 @@ int buflen = 0; int t, l, ret, output=1; int overflow_limit, lcmd, ldir; + int rsrc_id; char *b, *c, *d=NULL; PLS_FETCH(); @@ -116,6 +118,13 @@ array_init(array); } } + + /* we register the resource so that case of an aborted connection the + * fd gets pclosed + */ + + rsrc_id = ZEND_REGISTER_RESOURCE(NULL, fp, php_file_le_fopen()); + if (type != 3) { l=0; while ( !feof(fp) || l != 0 ) { @@ -183,8 +192,10 @@ if (output) (void)PUTC(buf[i]); } } + + /* the zend_list_delete will pclose our popen'ed process */ + zend_list_delete(rsrc_id); - ret = pclose(fp); #if HAVE_SYS_WAIT_H if (WIFEXITED(ret)) { ret = WEXITSTATUS(ret);

« previous php.cvs (#3538) next »