Программа Borland C++ 5.02
#include
#include
#include
using namespace std;
int main(int argc, char **argv)
{
DWORD dwWaitResult;
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
si.lpTitle = "Daughter process";
si.dwFlags = STARTF_USEFILLATTRIBUTE|STARTF_USEPOSITION|STARTF_USESIZE;
si.dwXSize = 800;
si.dwYSize = 300;
int MaxApplicationCount =4;
HANDLE ApplicationCountSemaphore = CreateSemaphore(NULL, 0, MaxApplicationCount, "MySem");
if(ApplicationCountSemaphore == NULL)
{
}
int GlobalApplicationCount;
ReleaseSemaphore(ApplicationCountSemaphore, 1, (LPLONG)&GlobalApplicationCount);
cout
if(GlobalApplicationCount
cout
Sleep(2000);
CreateProcess(argv[0], NULL, NULL, NULL, TRUE,CREATE_NEW_CONSOLE|NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
}
cout
getchar();
return 0;
}
Нужно сделать
Практическая часть: Заставьте консольный процесс запустить несколько своих копий (и далее рекурсивно). Убедитесь, что порождение процессов не будет бесконечным (остановитесь на 4 уровнях максимум). Для каждого процесса создать свое окно консоли с индивидуальными настройками.
Сейчас программа порождает бесконечное количество запущенных дочерних процессов.