]> granicus.if.org Git - php/commitdiff
MFB: fix PID info on windows
authorNuno Lopes <nlopess@php.net>
Sun, 31 Dec 2006 14:49:06 +0000 (14:49 +0000)
committerNuno Lopes <nlopess@php.net>
Sun, 31 Dec 2006 14:49:06 +0000 (14:49 +0000)
ext/standard/proc_open.c
ext/standard/proc_open.h

index 9b4d9f37402c0ed6bee52f4c114b91ebd8d758c9..a3f56dbff8ea6e6e09b67966476e04b9e726bc33 100644 (file)
@@ -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) {
index d1d4c1c45021afbeb650883c2bfe2f8a34c6cac4..5e07f2e5af770829d8c134913f59548f7d556cf9 100644 (file)
@@ -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;