/[cvs]/joko/Uni/BSArch/03/win32/utils_proc.c
ViewVC logotype

Diff of /joko/Uni/BSArch/03/win32/utils_proc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by joko, Fri Jun 16 00:31:50 2006 UTC revision 1.4 by joko, Fri Jun 16 00:47:07 2006 UTC
# Line 2  Line 2 
2    
3  #include <windows.h>  #include <windows.h>
4    
 #define MAX_PROCESSES 64  
   
5  // background process bookkeeping  // background process bookkeeping
6  HANDLE plist[MAX_PROCESSES];  HANDLE plist[MAXIMUM_WAIT_OBJECTS-1];
7  int plist_max = 0;  int plist_count = 0;
8    
9  BOOL os_start_process(char * filename, BOOL background) {  BOOL os_start_process(char * filename, BOOL background) {
10    
# Line 39  BOOL os_start_process(char * filename, B Line 37  BOOL os_start_process(char * filename, B
37    // 1. background mode    // 1. background mode
38    if (background) {    if (background) {
39      // TODO: background process bookkeeping      // TODO: background process bookkeeping
40      plist[plist_max] = pi.hProcess;      plist[plist_count] = pi.hProcess;
41      plist_max++;      plist_count++;
42        
43    // 2. normal (blocking) mode    // 2. normal (blocking) mode
44    } else {    } else {
# Line 67  BOOL os_wait_for_processes() { Line 65  BOOL os_wait_for_processes() {
65    int i;    int i;
66    HANDLE hProcess;    HANDLE hProcess;
67        
68    status = WaitForMultipleObjects(plist_max, plist, TRUE, INFINITE);    if (plist_count == 0)
69        return TRUE;
70      
71      status = WaitForMultipleObjects(plist_count, plist, TRUE, INFINITE);
72        
73    // close process handles    // close process handles
74    for (i = 0; i < plist_max; i++) {    for (i = 0; i < plist_count; i++) {
75        //printf("close process handles\n");
76      hProcess = plist[i];      hProcess = plist[i];
77      CloseHandle(hProcess);      CloseHandle(hProcess);
78    }    }
79    
80    // reset process counter    // reset process counter
81    plist_max = 0;    plist_count = 0;
82        
83    // check for and handle errors    // check for and handle errors
84    if (status == WAIT_FAILED) {    if (status == WAIT_FAILED) {

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed