Vykdyti ir laukti
Amžinai programuotojams skirtuose žurnaluose ir Internet diskusijų srityse kyla klausimai, kaip pradėti vykdyti kitą programą (ypač daugeliui neaišku, kaip valdyti MS-DOS programas) ir palaukti, kol ji baigs darbą. Dažniausiai siūlomi sprendimai yra pakankamai sudėtingi, nes "žaidžiama", pvz., pranešimų apie įvykius ("Notify") analize.
Čia pasiūlomas paprastas, veikiantis ir lengvai suprantamas būdas. Man tik neaišku, kaip stipriai sistemą užima amžinas tikrinimo ciklas?
#includeBOOL SpawnAndWait(LPSTR strDOSCall) { static WORD wRetCode = WinExec(strDOSCall, SW_HIDE); char szModuleName[128]; if (wRetCode < 32) return TRUE; // Klaida! while (GetModuleFileName(wRetCode, szModuleName, sizeof(szModuleName))) { // Laukti arba lygiagrečiai atlikti kokius nors kitus veiksmus // Gal būt patikrinti, ar ne per ilgai užtruko laukimas... } // MS-DOS programa baigė darbą return FALSE; } // end SpawnAndWait Pateiktame pavyzdėlyje "SpawnAndWait" funkcijai perduodama MS-DOS failo vardas (geriausia .PIF). "While" cikle tikrinama, koks modulio vardo ilgis, - kai tikrinamas procesas baigia darbą, grąžinama nulinė reikšmė, - tai požymis, kad reikia baigti "ciklinti".