Table of Contents

Teste Tema Asistenți

În această pagină se prezintă ce anume și cum se testează

Întoarce-mă la pagina temei

Testul 0

Testul 1

$ ./child1 1 2 3
[STDOUT] Salut, sunt child1!
[STDERR] Salut, sunt child1!
Numar de parametri 4
	Param 0 = ./child1
	Param 1 = 1
	Param 2 = 2
	Param 3 = 3
Work loop

Testul 2

$ for i in `seq 1 10`; do ./child2; done;
Am citit din memoria partajata: 0
Am citit din memoria partajata: 1
Am citit din memoria partajata: 2
Am citit din memoria partajata: 3
Am citit din memoria partajata: 4
Work loop

Testul 3

$ ./child3
[PANIC] Somebody called exit()
$ ./child3
[PANIC] Somebody called exit()
$ ./child3
Value = 10
Work loop

Testul 4

$ ./child4
Child4 started execution!
Work loop

Testul 5

$ ./guardian un_binar_care_nu_există
The child program does not exist!

Completare Windows

Pe Windows, checkerul nu mai redirectează ieșirile standard ale guardianului in fisiere

Recomand utilizarea acestei funcții de raportare:

static void report_error(char *filename, char *info)
{
	DWORD written = -1;

	err = CreateFile(
		filename,
		FILE_WRITE_DATA,
		FILE_SHARE_WRITE,
		NULL,
		OPEN_ALWAYS,
		FILE_ATTRIBUTE_NORMAL,
		NULL);

	CHECK(err, !=, INVALID_HANDLE_VALUE, "CreateFile()", -1);
	CHECK(WriteFile(err, info, strlen(info), &written, NULL), !=, 0, "WriteFile()", -1);
	CHECK(CloseHandle(err), !=, 0, "CloseHandle()", -1);
}

#define RUNNING                 "Guardian is already running\r\n"
#define NOT_EXIST               "The child program does not exist!\r\n"
report_error("__child_does_not_exist", NOT_EXIST);
report_error("__guardian_already_running", RUNNING);