Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
06.02.2018
Размер:
1.9 Кб
Скачать
#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();

}
Соседние файлы в папке лаб6