Добавил:
PaniKati
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабораторные / лаб6 / l6_1p
.c#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
#include <process.h>
void main()
{
int k;
DWORD rc;
HANDLE phandle;
STARTUPINFO si1, si2;
PROCESS_INFORMATION pi1, pi2;
printf("Parent Process Started\r\n");
memset(&si1, 0, sizeof(STARTUPINFO));
si1.cb=sizeof(si1);
memset(&si2, 0, sizeof(STARTUPINFO));
si2.cb=sizeof(si2);
rc=CreateProcess(NULL, "l6_2c1.exe Spock", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si1, &pi1);
if (!rc)
{
printf("Error create Process, codeError = %ld\n", GetLastError());
getchar();
}
printf("--------------------------------------------------------------------\r\n");
printf("For Child1 Process:\r\n");
printf("hProcess=%d hThread=%d ProcessId=%ld ThreadId=%ld\r\n", pi1.hProcess, pi1.hThread, pi1.dwProcessId, pi1.dwThreadId);
rc=CreateProcess(NULL, "l6_2c2.exe Jim", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si2, &pi2);
if (!rc)
{
printf("Error create Process, codeError = %ld\r\n", GetLastError());
getchar();
}
printf("For Child2 Process:\r\n");
printf("hProcess=%d hThread=%d ProcessId=%ld ThreadId=%ld\n", pi2.hProcess, pi2.hThread, pi2.dwProcessId, pi2.dwThreadId);
printf("--------------------------------------------------------------------\r\n");
HANDLE jbobj = CreateJobObject(NULL, NULL);
assign = AssignProcessToJobObject(jbobj, pi2.hProcess);
for (k=0; k<15; k++){
if (k==7){
TerminateProcess(pi1.hProcess, 0);
printf("Child1 is dead, Jim\r\n");}
if (k==11){
//TerminateProcess(pi2.hProcess, 0);
TerminateJobObject(jbobj, 0);
printf("Child2 is dead too, Jim\r\n");}
printf("I am Parent. Step %d.\r\n", k); Sleep(2000);}
CloseHandle(pi1.hProcess);
CloseHandle(pi1.hThread);
CloseHandle(pi2.hProcess);
CloseHandle(pi2.hThread);
getchar();
}