În această pagină se prezintă ce anume și cum se testează
Întoarce-mă la pagina temei
$ ./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
$ 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
$ ./child3 [PANIC] Somebody called exit() $ ./child3 [PANIC] Somebody called exit() $ ./child3 Value = 10 Work loop
$ ./child4 Child4 started execution! Work loop
$ ./guardian un_binar_care_nu_există The child program does not exist!
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);