From: Nuno Lopes Date: Sun, 31 Dec 2006 14:49:06 +0000 (+0000) Subject: MFB: fix PID info on windows X-Git-Tag: RELEASE_1_0_0RC1~448 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=976c72cce7ca0acc5d5a46aba8875d572690a027;p=php MFB: fix PID info on windows --- diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c index 9b4d9f3740..a3f56dbff8 100644 --- a/ext/standard/proc_open.c +++ b/ext/standard/proc_open.c @@ -216,10 +216,10 @@ static void proc_open_rsrc_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) #ifdef PHP_WIN32 - WaitForSingleObject(proc->child, INFINITE); - GetExitCodeProcess(proc->child, &wstatus); + WaitForSingleObject(proc->childHandle, INFINITE); + GetExitCodeProcess(proc->childHandle, &wstatus); FG(pclose_ret) = wstatus; - CloseHandle(proc->child); + CloseHandle(proc->childHandle); #elif HAVE_SYS_WAIT_H @@ -268,7 +268,7 @@ PHP_FUNCTION(proc_terminate) ZEND_FETCH_RESOURCE(proc, struct php_process_handle *, &zproc, -1, "process", le_proc_open); #ifdef PHP_WIN32 - TerminateProcess(proc->child, 255); + TerminateProcess(proc->childHandle, 255); #else kill(proc->child, sig_no); #endif @@ -336,7 +336,7 @@ PHP_FUNCTION(proc_get_status) #ifdef PHP_WIN32 - GetExitCodeProcess(proc->child, &wstatus); + GetExitCodeProcess(proc->childHandle, &wstatus); running = wstatus == STILL_ACTIVE; exitcode == STILL_ACTIVE ? -1 : wstatus; @@ -436,6 +436,7 @@ PHP_FUNCTION(proc_open) struct php_proc_open_descriptor_item descriptors[PHP_PROC_OPEN_MAX_DESCRIPTORS]; #ifdef PHP_WIN32 PROCESS_INFORMATION pi; + HANDLE childHandle; STARTUPINFO si; BOOL newprocok; SECURITY_ATTRIBUTES security; @@ -740,7 +741,8 @@ PHP_FUNCTION(proc_open) goto exit_fail; } - child = pi.hProcess; + childHandle = pi.hProcess; + child = pi.dwProcessId; CloseHandle(pi.hThread); #elif defined(NETWARE) @@ -865,6 +867,9 @@ PHP_FUNCTION(proc_open) proc->command = pestrdup(command, is_persistent); proc->npipes = ndesc; proc->child = child; +#ifdef PHP_WIN32 + proc->childHandle = childHandle; +#endif proc->env = env; if (pipes != NULL) { diff --git a/ext/standard/proc_open.h b/ext/standard/proc_open.h index d1d4c1c450..5e07f2e5af 100644 --- a/ext/standard/proc_open.h +++ b/ext/standard/proc_open.h @@ -19,7 +19,7 @@ #ifdef PHP_WIN32 typedef HANDLE php_file_descriptor_t; -typedef HANDLE php_process_id_t; +typedef DWORD php_process_id_t; #else typedef int php_file_descriptor_t; typedef pid_t php_process_id_t; @@ -40,6 +40,9 @@ typedef struct _php_process_env { struct php_process_handle { php_process_id_t child; +#ifdef PHP_WIN32 + HANDLE childHandle; +#endif int npipes; long pipes[PHP_PROC_OPEN_MAX_DESCRIPTORS]; char *command;